如何使用QtSql获取行数和列数?

时间:2015-04-16 04:25:09

标签: c++ mysql qt qtsql qsqlquery

我已经阅读了Qt文档,无法从语言本身找到直接从查询结果中获取行数和列数的方法。我能想到的唯一方法是在mysql查询中使用SELECT COUNT(*) FROM table_name

就像另一个连接器(PHP,python,C ++等),据我所知,没有直接的方法来获取这些值。也许我想念一些东西。那么,有没有可能的方法呢?也许是这样的:

int rows = db_connection->get_row_counts ();
int columns = db_connection->get_column_counts ();

2 个答案:

答案 0 :(得分:6)

您可以使用QSqlQuery::size()获取行数,使用QSqlRecord::count()获取列数:

QSqlQuery qry;
qry.prepare("SELECT * FROM someTable");
qry.exec();

qDebug() << "Number of Rows: " << qry.size();
qDebug() << "Number of columns: " << qry.record().count();

答案 1 :(得分:0)

要补充Nejat的答案,对于SQLite构造的数据库,size方法将不起作用,并返回-1。我认为这是因为SQLite不支持这种类型的查询信息(https://doc.qt.io/qt-5/qsqlquery.html#size)。

除非存在一个更干净的方法,否则它将用于获取行数:

 QSqlQuery query;
 int row_count = 0;
 
 // Run some query
 query.exec("SELECT * FROM SOME_TABLE");

 while(query.next())
     row_count++;

此外,可以利用SQL COUNT 函数:

   QSqlQuery query;
   int row_count = 0;

   query.exec("SELECT COUNT(*) FROM SOME_TABLE");

   if(query.first())
       row_count = query.value(0).toInt();