同時クエリを行うために、以下のコードを記述しました。異なるスレッドでのQSqlDatabase同時クエリ
QString databaseName = "DB-"+QThread::currentThread()->objectName();
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL",databaseName);
db.setHostName("192.168.1.2");
db.setDatabaseName("Behroozi");
db.setUserName("root");
db.setPassword("password");
db.open();
QSqlQuery query(db);
query.prepare("select * from Person where chatID=:chatID");
query.bindValue(":chatID",chatID);
if(query.exec())
return true;
db.close();
QSqlDatabase::removeDatabase(databaseName);
コードは、一意の名前で接続を作成し、それを開き、クエリを作成し、最後に接続を削除します。
問題は、メモリリークがあります。私がコードにコメントするとき、それは漏れません。それを防ぐために他に何をすべきですか?
私が書いた安全なコードですか?
私はdb.close()とがリターン前をremoveDatabaseコピーした場合、それが印刷されます:
QSqlDatabasePrivate :: removeDatabase:接続 'DB-ReplyThread-1' をまだで ですすべてのクエリが機能しなくなります。 documentationを引用する
メモリリークがあることをどのように知っていますか? Process Explorerのメモリ使用量が増加しますか? – sashoalm