QtでSQLを触った時の後片付け

Pocket

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setDatabaseName("hoge");
〜略〜
db.open();
〜処理〜
QString connName;
connName = db.connectionName();
db.close();
db.removeDatabase(connName);

みたいな感じで接続しててきとうに処理してcloseとremoveDatabaseすると、

connection ‘qt_sql_default_connection’ is still in use, all queries will cease to work

とか言われて死ぬ。(別に死なない)

 

どうやら、db.close()してもdbはデータベースへの参照情報を保持したままでいるらしい。dbをリセットしてやるとエラーも出ずにうまくいく。

結局、こんな感じにするといいみたい。(お片付け部分だけ)

QString connName;
connName = db.connectionName();
db.close();
db = QSqlDatabase();
db.removeDatabase(connName);

db = QSqlDatabaseがミソ。リセットだー。

参考はこちら→warning remove database – Stack Overflow

 

おしまい。

お茶漬け

たまーに飲み屋で食べるお茶漬けめちゃウマい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です