【问题标题】:How to lock a table in a database via Qt?如何通过 Qt 锁定数据库中的表?
【发布时间】:2014-09-08 22:10:10
【问题描述】:

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

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

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

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

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

如何在 Qt 中锁定和解锁表

【问题讨论】:

    标签: c++ qt sqlite qsqlquery qsqldatabase


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 2023-04-08
      • 2012-12-12
      • 2018-12-10
      相关资源
      最近更新 更多