Qt Threads 和默认的 QSQLDatabase 连接 (sqlite)
Qt Threads and the default QSQLDatabase connection (sqlite)
使用来自不同线程的默认数据库连接是否安全?像这样:
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。也许有一些关于正确模式的提示?
QSqlDatabase(表示一个数据库连接)不可重入。您只能从创建它的线程使用连接。如果您需要从另一个线程执行查询,您需要先从该线程创建另一个连接。
使用来自不同线程的默认数据库连接是否安全?像这样:
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。也许有一些关于正确模式的提示?
QSqlDatabase(表示一个数据库连接)不可重入。您只能从创建它的线程使用连接。如果您需要从另一个线程执行查询,您需要先从该线程创建另一个连接。