如何通过Qt锁定数据库中的表?

时间:2014-09-08 22:10:11

标签: c++ qt sqlite qsqlquery qsqldatabase

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

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

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

从Qt我想在每次轮询时阅读新更新的行。所以我想

锁定桌子;读所有行;删除所有行;解锁表格。

如何在Qt

中锁定和解锁表格

1 个答案:

答案 0 :(得分:1)

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