我对 Sql 模块如何与 Qt 中的多线程应用程序一起工作感到困扰。 http://doc.qt.io/qt-5/threads-modules.html#threads-and-the-sql-module明确指出“只能在创建它的线程内使用连接”。
但是我写的这段代码有效:
#include <QCoreApplication>
#include <QSqlQuery>
#include <QtConcurrentRun>
void req()
{
QSqlQuery q("INSERT INTO users (username) VALUES (\"test\")");
}
void db()
{
QSqlDatabase _db;
_db = QSqlDatabase::addDatabase("QMYSQL");
_db.setDatabaseName("dbname");
_db.setHostName("host");
_db.setUserName("username");
_db.setPassword("password");
if (_db.open())
std::cout << "Ok" << std::endl;
else
std::cout << "Error" << std::endl;
}
int main(int ac, char **av)
{
QCoreApplication app(ac, av);
QtConcurrent::run(db);
sleep(1);
QtConcurrent::run(req);
return app.exec();
}
我的应用程序设计需要多个线程与数据库交互。这些线程由 QtConcurrent::run() 生成和管理。
那么,既然这段代码有效,我应该继续这样做还是会遇到麻烦?
欢迎任何帮助、文档或解释!谢谢你。