需求:
数据库的一张表里有10000条数据
一下子都读出来,页面会卡死。
之前上个项目用的方法是分页显示,数据库查询时加limit
这次情景不同,如果就必须要把数据都读出来。
那么可以用多线程,在子线程中查询数据,主线程可以弹出一个模态窗口进行提示,如“数据载入中”。
但是我按这个思路走下去,程序会出现偶发的崩溃。
去找原因时,猜测应该是因为由QSqlDataBase::addDatabase()生成的QSqlDatabase只能在创建它的线程中使用。
qt数据库多线程问题的解决(QSqlDatabase只能在创建它的线程中使用)_qsqlite不支持多线程-CSDN博客
解决思路是:
如果希望在子线程中完成对数据库的查询操作,那么在子线程中重新添加一个新的连接名。
比如线程A
QSqlDatabase::addDatabase("QSQLITE", "A");
QSqlQuery query(QSqlDatabase::database("A"));线程B
QSqlDatabase::addDatabase("QSQLITE", "B");
QSqlQuery query(QSqlDatabase::database("B"));