Qt线程和默认的QSQLDatabase连接(sqlite)

时间:2018-05-30 06:21:57

标签: qt sqlite 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。也许有一些提示正确的模式?

1 个答案:

答案 0 :(得分:1)

QSqlDatabase(代表一个数据库连接)不可重入。您只能从创建它的线程使用连接。如果您需要从另一个线程执行查询,则需要首先从该线程创建另一个连接。