-(void)insertQuery:(NSString *)query{
sqlite3_stmt *selectstmt;
// Create a sqlite object.
sqlite3 *database;
// Set the database file path.
NSString *databasePath = [self.documentsDirectory stringByAppendingPathComponent:self.databaseFilename];
if (sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
//*************** insert value in database******************************\\
const char *sql = [query UTF8String];
sqlite3_prepare_v2(database,sql, -1, &selectstmt, NULL);
if(sqlite3_step(selectstmt)==SQLITE_DONE)
{
NSLog(@"insert successfully");
}
else
{
NSLog(@"insert not successfully");
NSLog(@"DB Error: %s", sqlite3_errmsg(database));
}
sqlite3_finalize(selectstmt);
}
sqlite3_close(database);
}
使用上面的代碼試圖觸發插入查詢,但有時它的工作原理和大部分時間我得到DB鎖定錯誤。Sqlite DB鎖定
對於幫助雙手提前致謝。
我沒有看到一個SQL語句。 – trojanfoe
當您忘記清理某些語句或連接時會發生此錯誤。這段代碼看起來不錯;錯誤是在別的地方。 –
這不是真的好。每次執行語句時打開數據庫非常昂貴。這也可能是這個問題的根本原因,因爲OP沒有正確管理連接。 – trojanfoe