-(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