Qt アプリケーションの異なるスレッドで SQL データベースへの複数の接続を作成して使用するにはどうすればよいですか?
私は言うドキュメントを読みました
接続は、それを作成したスレッド内からのみ使用できます。
異なるスレッドで接続を分離するにはどうすればよいですか?
Qt アプリケーションの異なるスレッドで SQL データベースへの複数の接続を作成して使用するにはどうすればよいですか?
私は言うドキュメントを読みました
接続は、それを作成したスレッド内からのみ使用できます。
異なるスレッドで接続を分離するにはどうすればよいですか?
スレッドごとにデータベース接続を作成する必要があります。QSqlDatabase::addDatabase()
のインスタンスを作成するために、各スレッドでパラメータとして異なる接続名とともに使用しますQSqlDatabase
。静的addDatabase
関数はスレッド セーフであり、異なるスレッドで呼び出すことができます。
Qtを使用してプログラムの異なるスレッドでsql dbへの複数の接続を作成して使用するにはどうすればよいですか?
// general worker init slot
DbWorker::init()
{
this->db = QSqlDatabase::addDatabase("QSQLITE", dbName);
db.setDatabaseName(dbPath);
db.open();
}
メインクラスまたは次のようなものがある場合:
DbWorker w1 = new DbWorker;
w1.setDbName("mem_db");
w1.setDbPath(":memory:");
QThread* t1 = new QThread(this);
w1->moveToThread(t1);
connect(t1, SIGNAL(started()), w1, SLOT(init()));
t1->start();
DbWorker w2 = new DbWorker;
w1.setDbName("file_db");
w1.setDbPath("~/usr/foo.db");
QThread* t2 = new QThread(this);
w1->moveToThread(t1);
connect(t2, SIGNAL(started()), w2, SLOT(init()));
t1->start();
したがって、スレッド1にメモリ接続があり、スレッド2にファイル接続があります。管理する唯一のことは、GUIアプリケーションの場合、データをGUIスレッドにフェッチすることです
VoidRealms @ youtube のこのチュートリアルに従ってください。彼は、SQL接続、モデル、およびQtに関する他の多くのことについて非常に良い説明をしています。
ご覧になった後もさらにサポートが必要な場合は、テスト用のサンプル コードをお送りします。