私は、単一のデータベースにアクセスする複数のスレッドを持つマルチスレッドQtアプリケーションを使用しています。各スレッドでSELECT/INSERT/UPDATEを実行するために、別々のQSqlDatabase接続を作成する必要がありますか?以下のガイドラインは、上記のアプローチを落胆されている場合はQtのドキュメントから複数のQtスレッドで1つのQSqlDatabase接続を使用する
が、私は理解することができません私は提案:
を「接続は、それを作成したスレッドの中から使用することができます間の の移動の接続。異なるスレッドの からのスレッドの作成やクエリの作成はサポートされていません。
私は実質的に私の複数のQThreadsで同じ接続を使用してみましたが、すべてが実質的に正常に動作しますが、その正確な事はやっている場合を理解したかったです。私は複数のスレッドで同じ接続名を使用したいhttps://www.sqlite.org/threadsafe.html
理由:FYI、私は デフォルトでシリアル化されたモードをサポートして理解(Qtsql APIを使用して)Qtの中からsqlite3のを使用しています
複数のスレッドで同じデータベースに異なる接続を使用しようとしたときにSELECT/INSERT/UPDATEを実行したため、私は
database locked
の問題が頻繁に発生しています。しかし、複数のスレッドで同じ接続を使用する場合、この問題は完全に排除されました。親切に同じガイド。
よろしく、
Saurabhガンジー
多分、挿入/更新/削除するスロットを持つラッパークラスを作成し、独自のスレッド – Zaiborg