QT数据库-获取记录数目

使用QT+sqlite3进行编码,需要获取符合条件的记录数目,意外的发现常用的获取方式无法工作,尝试了四种方式:

1.通过数据库的特征进行判断,如果不支持查询记录数目的特性,就使用笨方法(获取记录最后一条的序号,然后加一,这种方式运行略慢)
QSqlDatabase defaultDB = QSqlDatabase::database(); if (defaultDB.driver()->hasFeature(QSqlDriver::QuerySize)) { num = queryResult.size(); } else { queryResult.last(); num = queryResult.at() + 1; }


2.有人建议使用这种方式,颇为的荒谬,queryResult.record()是获取字段域的值集合,只有一行记录符合要求,但是表有2个字段,那么使用这种方式获取的就是2,而并不是1.


num = queryResult.record().count();

3.从第一种方式可以看出,如果数据库不支持这种特性,那么它是完全无用的,返回-1
queryResult.size()

4.同size(),如果数据库不支持这种特性,只是返回0
queryResult.numRowsAffected()
【QT数据库-获取记录数目】

    推荐阅读