Efo*_*fog 6 c++ sql sqlite qt qsqlquery
QSqlQuery query;
QString queryText("SELECT * FROM section");
query.exec(queryText);
qDebug() << query.size(); //always -1
while (query.next()) qDebug() << query.value(0).toString(); //got 16 records
Run Code Online (Sandbox Code Playgroud)
方法size()始终返回-1.请帮忙.谢谢.
Nej*_*jat 10
query.size()SQLite不支持.但是您可以通过变通方法获得行数.QSqlQuery::last ()检索结果中的最后一条记录(如果可用),并将查询定位在检索到的记录上.在调用之后,last()您可以检索最后一条记录的索引,并使用first()和在第一条记录之前定位查询previous():
int numberOfRows = 0;
if(qry.last())
{
numberOfRows = qry.at() + 1;
qry.first();
qry.previous();
}
Run Code Online (Sandbox Code Playgroud)
返回结果的大小(返回的行数),如果无法确定大小或数据库不支持报告有关查询大小的信息,则返回 -1。请注意,对于非 SELECT 语句(isSelect() 返回 false),size() 将返回 -1。如果查询未激活(isActive() 返回 false),则返回 -1。
要确定受非 SELECT 语句影响的行数,请使用 numRowsAffected()。
您的查询isSelect处于活动状态,但 SQLite 是无法直接获得查询大小的数据库之一。
为了证明这一点,请调用以下示例:
qDebug() <<db.driver()->hasFeature(QSqlDriver::QuerySize);
Run Code Online (Sandbox Code Playgroud)
它返回false。
| 归档时间: |
|
| 查看次数: |
3103 次 |
| 最近记录: |