-(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 Locked
За помощь Спасибо заранее.
Я не вижу SQL заявление. – trojanfoe
Эта ошибка возникает, когда вы забыли очистить какой-либо оператор или соединение. Этот код выглядит нормально; ошибка в другом месте. –
Это не совсем нормально. Открытие базы данных каждый раз, когда выполняется инструкция, очень дорого. Это также, вероятно, является основной причиной этой проблемы, поскольку OP не правильно управляет соединениями. – trojanfoe