sqlite insert查询没有立即提交到数据库

时间:2016-09-03 10:49:41

标签: 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秒后,代码不会立即提交到数据库。

请提出建议。

1 个答案:

答案 0 :(得分:0)

您必须删除以下行

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

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

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