Qual é a maneira correta de QSqlDatabase e QSqlQuery?
Fiquei confuso com o manual, devo trabalhar assim:
{
QSqlDatabase db = QSqlDatabase::addDatabase (...);
QSqlQuery query (db);
query.exec (...);
}
QSqlDatabase::removeDatabase (...);
Como o documento indica,query
oudb
será desconstruído automaticamente. Mas isso é eficiente?
Bem, se eu armazenar em cachedb
dentro de uma classe, como o seguinte:
class Dummy {
Dummy() {
db = QSqlDatabase::addDatabase (...);
}
~Dummy() {
db.close();
}
bool run() {
QSqlQuery query (db);
bool retval = query.exec (...);
blabla ...
}
private:
QSqlDatabase db;
};
s vezes eu podia ver avisos como:
QSqlDatabasePrivate::removeDatabase: connection 'BLABLA' is still in use, all queries will cease to work.
Mesmo se eu não ligasserun()
.