注册 登录
编程论坛 QT论坛

多线程如何并发访问sqlite数据库

qtyangyong 发布于 2021-11-27 11:23, 1550 次点击
之前看文章说,sqlite自带了一个等待锁,只要使用一个全局的sql_query对象就可以解决问题。
实际试了一下,即使两个线程执行select语句,都会出现如下错误:

第一个线程select得到了结果
第二个线程 QSqlQuery::value: not positioned on a valid record
ASSERT: "!initialFetch" in file ..\..\..\sql\drivers\sqlite\qsql_sqlite.cpp, line 244
程序闪退

有成熟的解决方案吗?
1 回复
#2
qtyangyong2021-11-27 17:51
目前没想到好的方法,用了一个QMutex的全局变量,在每个exec前lock,出错或成功后数据保存到局部变量后unlock;测试能实现功能。
1