私はsqliteの3.7を使用しています、Linuxの2.6.38、QT 4.8.4データベースにコミットしませsqliteのINSERTクエリがすぐ
次のように私のコード:
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;");
次の行を削除する必要が
_ "コードは約10秒後すぐにデータベースにコミットしません。 " - どのように知っていますか?どのようにこれをチェックしていますか?開いている取引はありますか? –