QSqlQueryModel读取数据库,提示 database locked

来源:互联网 发布:开源即时通讯软件 编辑:程序博客网 时间:2024/05/17 23:12

问题:在使用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();
     }


0 0
原创粉丝点击