使用来自不同线程的默认数据库连接是否安全?像这样:
bool upSafe(const QString &mig_to, const QString &mig_from) const {
if (!QSqlDatabase::database().transaction()) {
qCCritical(hfCoreMT) << "Failed init database transaction";
return false;
}
if (!up(mig_to, mig_from)) {
QSqlDatabase::database().rollback();
return false;
}
return QSqlDatabase::database().commit();
}
在函数up
中创建并执行了默认的QSQLQuery。也许有一些提示正确的模式?
答案 0 :(得分:1)
QSqlDatabase(代表一个数据库连接)不可重入。您只能从创建它的线程使用连接。如果您需要从另一个线程执行查询,则需要首先从该线程创建另一个连接。