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(表示一个数据库连接)不可重入。您只能从创建它的线程使用连接。如果您需要从另一个线程执行查询,您需要先从该线程创建另一个连接。