如何使用 QtSql 获取行数和列数?
How to get numbers of rows and columns using QtSql?
我已经阅读了 Qt 文档,但无法从语言本身找到直接的方法来从查询结果中获取行数和列数。我能想到的唯一方法是在 mysql 查询本身中使用 SELECT COUNT(*) FROM table_name
。
与另一个连接器(PHP、python、C++ 等)一样,据我所知,没有直接的方法来获取这些值。也许我错过了什么。那么,有什么办法可以做到这一点?也许是这样的:
int rows = db_connection->get_row_counts ();
int columns = db_connection->get_column_counts ();
您可以使用 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();
添加到 Nejat 的答案中,对于 SQLite 构建的数据库,size 方法将不起作用,并且 returns -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();
我已经阅读了 Qt 文档,但无法从语言本身找到直接的方法来从查询结果中获取行数和列数。我能想到的唯一方法是在 mysql 查询本身中使用 SELECT COUNT(*) FROM table_name
。
与另一个连接器(PHP、python、C++ 等)一样,据我所知,没有直接的方法来获取这些值。也许我错过了什么。那么,有什么办法可以做到这一点?也许是这样的:
int rows = db_connection->get_row_counts ();
int columns = db_connection->get_column_counts ();
您可以使用 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();
添加到 Nejat 的答案中,对于 SQLite 构建的数据库,size 方法将不起作用,并且 returns -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();