首页| 论坛| 消息

标题:Qt5.12.6 数据库跨线程访问失败
作者:yyzq
日期:2020-06-09 09:36
内容:

问题描述:
原先的代码使用Qt5.4 msvc编译32位程序,数据库的初始化放在线程 访问是在其他线程 正常没有问题
同样的代码升级到Qt5.12.6编译64位,初始化可以成功 访问失败 提示drive not loaded
代码如下:
bool BTDatabaseCtl::initDB(const QString &dbName, const QString &password)
{
//--- 线程中初始化
mMutex.lock();
bool flag = false;
if (mDriver == nullptr)
{
mDriver = new ZSQLiteCipherDriver();
}
else
{
mMutex.unlock();
return true;
}
mDBName = dbName;
mPassword = password;
mConnectionName = BTAppHelper::creatUid();
QSqlDatabase innerDB = QSqlDatabase::addDatabase(mDriver, mConnectionName);
switch (openDB(innerDB, dbName, password))
{
case -2:
LOG_ERROR()


#1 [75233109 06-09 18:55]
不是版本问题,
Qt的数据库本来就不支持跨线程访问
#2 回 75233109 的帖子 [yyzq 06-10 09:18]
75233109:不是版本问题,
Qt的数据库本来就不支持跨线程访问 (2020-06-09 18:55) 
谢谢,是的 在使用的线程open就可以了

回复 发表
主题 版块