您的位置:首页 > 产品设计 > UI/UE

QSqlQueryModel读取数据库,提示 database locked

2015-08-20 12:07 756 查看
问题:在使用QT的QSqlQueryModel操作SQLite数据库的时候,drop table 时,提示错误信息database table is locked Unable to fetch row,也就是database locked,找了半天,发现,当查询结果条目大于256时,会提示此错误。

原因:

原来,QT的QSqlQuery或QSqlQueryModel每次最多只能缓存查询结果的256条。即,如果查询语句操作的结果超过256条了,也只能返回256。这样就必然会导致在后续操作中的错误。

解决办法

在操作结果前先通过fetchmore()来获取所有的结果,方法如下:

QString sqlstr;

sqlstr=QString("select * from a");

//QSqlQueryModel *model = new QSqlQueryModel

model->setQuery(sqlstr);

while(model->canFetchMore())

{

model->fetchMore();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: