欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Qt 多线程和数据库

最编程 2024-09-30 08:39:36
...

需求:

数据库的一张表里有10000条数据

一下子都读出来,页面会卡死。

之前上个项目用的方法是分页显示,数据库查询时加limit

这次情景不同,如果就必须要把数据都读出来。

那么可以用多线程,在子线程中查询数据,主线程可以弹出一个模态窗口进行提示,如“数据载入中”。

但是我按这个思路走下去,程序会出现偶发的崩溃。

去找原因时,猜测应该是因为由QSqlDataBase::addDatabase()生成的QSqlDatabase只能在创建它的线程中使用

qt数据库多线程问题的解决(QSqlDatabase只能在创建它的线程中使用)_qsqlite不支持多线程-****博客

解决思路是:

如果希望在子线程中完成对数据库的查询操作,那么在子线程中重新添加一个新的连接名。

比如线程A
QSqlDatabase::addDatabase("QSQLITE", "A");
QSqlQuery query(QSqlDatabase::database("A"));

线程B
QSqlDatabase::addDatabase("QSQLITE", "B");
QSqlQuery query(QSqlDatabase::database("B"));