我得到了與手動迷茫,我應該像這樣工作:QSqlDatabase&QSqlQuery的正確方法是什麼?
{
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()
。
我是有這個問題,使這種適應我能夠關閉數據庫調用''QSqlDatabase :: removeDatabase(QSqlDatabase ::數據庫(「數據庫名」)之後;'' –