代码之家  ›  专栏  ›  技术社区  ›  ephemerr

qt线程和默认qsqldatabase连接(sqlite)

  •  0
  • ephemerr  · 技术社区  · 6 年前

    使用来自不同线程的默认数据库连接是否安全?这样地:

    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 回复  |  直到 6 年前
        1
  •  1
  •   peppe    6 年前

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

    推荐文章