linux - sqlite 插入查询未立即提交到数据库

标签 linux qt sqlite

我正在使用 sqlite 3.7、linux 2.6.38、qt 4.8.4

我的代码如下:

DataManager::DataManager(QObject *parent, const QString& path) : QObject(parent){

    this->db = QSqlDatabase::addDatabase("QSQLITE");
    this->db.setDatabaseName(path);
    this->db.open();
    this->execute("PRAGMA foreign_keys=ON;");
    this->execute("PRAGMA synchronous=OFF;");
}
void DataManager::execute(const QString& sql) throw(DataException){

    QSqlQuery query(db);
    query.prepare(sql);

    if(!query.exec()) THROWDATA("Could not execute \"" + sql + "\"(" + query.lastError().text()+")", query.lastError().number());

    qDebug() << "commit:" << query.isActive() << query.lastError();
    query.clear();
    qDebug() << "commit:" << query.isActive() << query.lastError();
}

当我执行

this-> execute("Insert into table values('0' , 'Name');

代码在提交大约 10 秒后不会立即提交到数据库。

需要建议。

最佳答案

您必须删除以下行

this->execute("PRAGMA synchronous=OFF;");

如果您想更加确定,可以显式启用同步模式(通常是默认模式):

this->execute("PRAGMA synchronous=NORMAL;");

关于linux - sqlite 插入查询未立即提交到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39306076/

相关文章:

swift - SQLite 插入 Swift 导致循环 Swift 3.1

linux - 根据另一个文件中的列对文件进行排序

c++ - Qt/C++中如何从QApplication继承样式表

python - Qt QGraphicsDropShadowEffect 没有显示

qt - 如何定义 qreal 文字

svn - Subversion 1.7(客户端): Does reindexing and vacuuming wc. db 提高性能?

linux - 带有参数和自动完成的 bash 别名

linux - Linux 中的管道会丢失数据吗?

c++ - 如何在 Linux 中提高 SSD I/O 吞吐量并发性

android - 电话差距 sqlite 插件 vs websql