在Qt中使用数据库插入命令时,操作失败了。
qDebug() << query.lastError().text()提示信息:‘database is locked Unable to fetch row’
原因是QSqlQueryModel中每次只缓存查询结果的256条,即,如果查询语句操作的结果超过256条了,也只能返回256。
解决办法:
在操作前先通过fetchmore()来获取所有的结果:
QString sqlstr;
sqlstr = QString("select * from a");
model->setQuery(sqlstr);
while(model->canFetchMore())
{
model->fetchMore();
}
顺利解决问题。
其它导致数据库lock的问题:
SQLite写是锁整个数据库的,在写着数据库的时候,不能进行其它操作,同时读没有问题。
需要检查代码,看有没有同时操作数据库的操作。