2014-09-08 8 views
1

Я подключился к базе данных в Qt, используя C++.Как заблокировать таблицу в базе данных через Qt?

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