2

c++ を使用して Qt のデータベースに接続しました。

 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
 db.setDatabaseName("/link/to/my.db");

同時に、同じデータベースに接続し、「myTable」というテーブルを常に更新する Python プログラムがあります。

Qt から、ポーリングするたびに新しく更新された行を読みたいと思います。だから私はしたいです

テーブルをロックします。すべての行を読み取ります。すべての行を削除します。テーブルのロックを解除します。

Qtでテーブルをロックおよびロック解除するにはどうすればよいですか

4

1 に答える 1

2

SQLite にはテーブルのロック コマンドはありません。ただし、トランザクションごとにデータベースをロックできます。

BEGIN IMMEDIATE TRANSACTION;
...
COMMIT TRANSACTION;

または

BEGIN EXCLUSIVE TRANSACTION;
...
COMMIT TRANSACTION;

したがって、操作の前後にトランザクション コマンドを実行できます。

q.exec("BEGIN IMMEDIATE  TRANSACTION");

...

q.exec("COMMIT");

または

 db.transaction(); // Begins a transaction

 ...

 db.commit(); //Commits a transaction
于 2014-09-09T03:32:08.163 に答える