Я запутался в руководстве, должен ли я работать следующим образом:
{
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 ()
.