Как правильно использовать QSqlDatabase и QSqlQuery?

Я запутался в руководстве, должен ли я работать следующим образом:

{
 QSqlDatabase db = QSqlDatabase::addDatabase (...);
 QSqlQuery query (db);
 query.exec (...);
}

QSqlDatabase::removeDatabase (...);

Как указано в документе, query или db будут деконструированы автоматически. { {1}} Но так ли это эффективно?

Что ж, если я кэширую db внутри класса, как показано ниже:

class Dummy {
  Dummy() { 
    db = QSqlDatabase::addDatabase (...);
  }
  ~Dummy() {
    db.close();
  }

  bool run() {
    QSqlQuery query (db);
    bool retval = query.exec (...);
    blabla ...
  }

  private:
    QSqlDatabase db;
};

Иногда я мог видеть такие предупреждения, как:

QSqlDatabasePrivate::removeDatabase: connection 'BLABLA' is still in use, all queries will cease to work.

Даже если я этого не сделал » t вызовите run () .

29
задан alexisdm 7 October 2011 в 15:42
поделиться