データベースに接続するウィジェットがあります:
Widget::Widget(QWidget *parent)
{
QString databaseName = "name";
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(databaseName);
db.setHostName("localhost");
if(!db.open())
qDebug()<<"ret error";
}
ウィジェットを閉じた後にデータベース接続を削除したいと思います(現在、次のような警告が表示されます:) QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection is still in use...
。いくつかのトピックを読み、それらからいくつかの解決策を評価しようとしましたが、どれもうまくいきません。私のコード:
void Widget::closeEvent(QCloseEvent *e)
{
QSqlDatabase db = QSqlDatabase::database();
QString connection = db.connectionName();
db.close();
QSqlDatabase::removeDatabase(connection);
qDebug()<<"error: "<<db.lastError().text();
}
私が得るエラーは次のとおりです。Driver not loaded Driver not loaded
これを行う正しい方法は何ですか?
編集:
別の方法:
void Widget::someMethod()
{
QSqlDatabase db = QSqlDatabase::database();
QSqlQuery query(db);
query.exec("some query");
}