int sqlSize(QSqlQuery query)
{
int initialPos = query.at();
// Very strange but for no records .at() returns -2
int pos = 0;
if (query.last())
pos = query.at() + 1;
else
pos = 0;
// Important to restore initial pos
query.seek(initialPos);
return pos;
}
3 回答
SQLite不支持
query.size()
. 但是您可以通过变通方法获得行数 .QSqlQuery::last ()
检索结果中的最后一条记录(如果可用),并将查询定位在检索到的记录上 . 在调用last()
之后,您可以检索最后一条记录的索引,并使用first()
和previous()
在第一条记录之前定位查询:来自doc:
http://qt-project.org/doc/qt-4.8/qsqlquery.html#size
您的查询
isSelect
并且处于活动状态,但SQLite是查询大小无法直接使用的数据库之一 .为了证明这称为例如:
它返回
false
对我自己,我使用这个功能