如何在Qt应用程序的不同线程中创建和使用多个SQL数据库连接?
我已阅读说
的文档只能在创建连接的线程中使用连接。
如何在不同的线程中分隔连接?
答案 0 :(得分:6)
您应该为每个线程创建一个数据库连接。使用具有不同连接名称的QSqlDatabase::addDatabase()
作为每个线程中的参数来创建QSqlDatabase
的实例。静态addDatabase
函数是线程安全的,可以在不同的线程中调用。
答案 1 :(得分:2)
如何使用Qt在程序的不同线程中创建和使用sql db的多个连接?
// general worker init slot
DbWorker::init()
{
this->db = QSqlDatabase::addDatabase("QSQLITE", dbName);
db.setDatabaseName(dbPath);
db.open();
}
在您的主要课程或任何地方,如:
DbWorker w1 = new DbWorker;
w1.setDbName("mem_db");
w1.setDbPath(":memory:");
QThread* t1 = new QThread(this);
w1->moveToThread(t1);
connect(t1, SIGNAL(started()), w1, SLOT(init()));
t1->start();
DbWorker w2 = new DbWorker;
w1.setDbName("file_db");
w1.setDbPath("~/usr/foo.db");
QThread* t2 = new QThread(this);
w1->moveToThread(t1);
connect(t2, SIGNAL(started()), w2, SLOT(init()));
t1->start();
所以你在thread1中有内存连接,在thread2中有文件连接。唯一要管理的是如果它是gui应用程序,则将数据提取到gui线程
答案 2 :(得分:-2)
关注VoidRealms @ youtube上的this教程。他对sql连接,模型以及关于Qt的许多其他内容有很好的解释。
如果您在观看后仍需要更多帮助,我很高兴为您发送示例代码供您测试。