我使用的是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秒后,代码不会立即提交到数据库。
请提出建议。
答案 0 :(得分:0)
您必须删除以下行
this->execute("PRAGMA synchronous=OFF;");
如果您想要更加确定,可以明确启用同步模式(通常是默认模式):
this->execute("PRAGMA synchronous=NORMAL;");