Как заблокировать таблицу в базе данных через Qt?

Я подключился к базе данных в Qt, используя c ++.

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

Одновременно у меня есть программа на Python, которая подключается к одной и той же базе данных и постоянно обновляет таблицу с именем «myTable».

Из Qt я хочу читать недавно обновленные строки каждый раз, когда я опрашиваю. Итак, я хочу

Заблокировать стол; Читать все строки; Удалить все строки; Разблокировать стол.

Как заблокировать и разблокировать таблицу в Qt

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
1

Другие решения


По вопросам рекламы [email protected]