Я пытаюсь вставить значение в базу данных SQLite, но каждый раз, когда я пытаюсь, моя программа просто падает без сообщения об ошибке вообще.
Вот мой код:
- (void) insertToDatabase:(NSString *) refName {
// The Database is stoed in the application bundle
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"staticdata.sqlite"];
if(sqlite3_open([path UTF8String], &database) == SQLITE_OK){
const char *sql = "Insert into usersDates(dateDescription) VALUES (?)";
sqlite3_stmt *init_statement;
sqlite3_bind_text(init_statement, 1, [refName UTF8String], -1, SQLITE_TRANSIENT);
if(!sqlite3_prepare_v2(database, sql, -1, &init_statement, NULL) == SQLITE_OK){
NSAssert1(0, @"Failed to insert to database file with message '%s'.", sqlite3_errmsg(database));
}
if(sqlite3_step(init_statement) != SQLITE_DONE ) {
NSLog( @"Error: %s", sqlite3_errmsg(database) );
} else {
NSLog( @"Insert into row id = %d", sqlite3_last_insert_rowid(database));
}
sqlite3_finalize(init_statement);
} else {
sqlite3_close(database);
NSAssert1(0, @"Failed to open database file with message '%s'.", sqlite3_errmsg(database));
}
}
Кажется, ошибка возникает в операторе bind. Я подтвердил, что база данных действительно открывается, и refname правильно передается моему методу.
Кто-нибудь может помочь? Я обычно использую основные данные, однако это исправление ошибки в существующем проекте, и у меня просто нет времени выделять для перехода к основным данным.