Supprimer le warning : 'qt_sql_default_connection' is still in use
Bonjour,
J'essaie de faire une programme qui fait l'affichage de du contenu d'une table mySql.
L'affichage se passe bien, mais lors de la fermeture de la fenetre, le warning suivant s'affiche :
Code:
1 2
|
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work. |
Pour l'enlever, j'ai essaye de faire "close" et "removeDatabase", mais je continue a avoir le meme souci.
Mon code est le suivant (en commentaire ce que j'ai essaye sans succes) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
Grid::Grid(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
//Connecting to the DB
connectDb();
//Configuring model
QSqlTableModel * model = new QSqlTableModel;
model->setTable("TableTest");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->setHeaderData(0, Qt::Horizontal, QObject::tr("val1"));
model->setHeaderData(1, Qt::Horizontal, QObject::tr("val2"));
model->setHeaderData(2, Qt::Horizontal, QObject::tr("val3"));
model->setHeaderData(3, Qt::Horizontal, QObject::tr("val4"));
ui.tableView->setModel(model);
ui.verticalLayout->addWidget(ui.tableView);
setLayout(ui.verticalLayout);
QString connection = _db.connectionName();
qDebug() << connection;
/**
QSqlDatabase::database( connection ).close();
QSqlDatabase::removeDatabase( connection );*/
}
Grid::~Grid()
{
//Closing DB
_db.close();
//Removing DB
_db.removeDatabase("qt_sql_default_connection");
QSqlDatabase::removeDatabase("qt_sql_default_connection");
if (_db.isOpen())
qDebug() << "Still opened ?!";
if (_db.isValid())
qDebug() << "Still valid ?!";
/*
QString connection = _db.connectionName();
//Closing DB
_db.close();
//Removing DB
QSqlDatabase::removeDatabase(connection);
QSqlDatabase::database( connection ).close();
QSqlDatabase::removeDatabase( connection );
*/
}
QSqlDatabase Grid::connectDb()
{
_db = QSqlDatabase::addDatabase("QMYSQL");
_db.setHostName("localhost");
_db.setDatabaseName("Qt4TestDB");
_db.setUserName("Qt4");
_db.setPassword("123456");
if (!_db.open())
qDebug() << "Failed to connect to root mysql admin";
return _db;
} |
main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Grid w;
w.show();
int aRc = a.exec();
// QSqlDatabase::database("qt_sql_default_connection").close();
// QSqlDatabase::removeDatabase("qt_sql_default_connection");
return aRc;
} |
Je vous remercie d'avance pour votre aide.