マニュアルと混同しました。次のように作業する必要があります。
{
QSqlDatabase db = QSqlDatabase::addDatabase (...);
QSqlQuery query (db);
query.exec (...);
}
QSqlDatabase::removeDatabase (...);
ドキュメントが指摘するように、query
またはdb
自動的に分解されます。しかし、それは効率的ですか?
さて、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.
私が電話しなくてもrun()
。