mi sono confuso con il manuale, dovrei lavorare in questo modo:Qual è il modo corretto di QSqlDatabase e QSqlQuery?
{
QSqlDatabase db = QSqlDatabase::addDatabase (...);
QSqlQuery query (db);
query.exec (...);
}
QSqlDatabase::removeDatabase (...);
Come il documento sottolinea, query
o db
verrà suddivisa automaticamente. Ma è così efficiente?
Beh, se io Caché db
all'interno di una classe, come il seguente:
class Dummy {
Dummy() {
db = QSqlDatabase::addDatabase (...);
}
~Dummy() {
db.close();
}
bool run() {
QSqlQuery query (db);
bool retval = query.exec (...);
blabla ...
}
private:
QSqlDatabase db;
};
A volte ho potuto vedere gli avvertimenti come:
QSqlDatabasePrivate::removeDatabase: connection 'BLABLA' is still in use, all queries will cease to work.
Anche se non ho chiamato run()
.
ho avuto questo problema, dopo aver fanno di questo adattamento sono riuscito a chiudere il database chiamando '' QSqlDatabase :: removeDatabase (QSqlDatabase :: database ("Nome database"); '' –