2

我已经使用 c++ 连接到 Qt 中的数据库。

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

同时我有一个 Python 程序,它连接到同一个数据库并不断更新一个名为“myTable”的表。

从 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 回答