приложение для iPhone отказывает с sqlite3_bind_text ()

Я пытаюсь сделать простое приложение, которое хранит и отображает карты флэш-памяти, однако у меня есть ужасное время, заставляя мой SQLite работать. Соединение с базой данных прекрасно, но когда я пробую вставку, оно разрушает и не дает признака того, что пошло не так, как надо. Это - код, который я использую для вставки карты флэш-памяти в таблицу.

const char *insert = "INSERT OR REPLACE INTO LIST (TERM, DEFINITION) VALUES (?, ?);";
sqlite3_stmt *statement;
sqlite3_prepare_v2(database, insert, -1, &statement, nil);
sqlite3_bind_text(statement, 1, [term UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(statement, 2, [def UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_step(statement);
sqlite3_finalize(statement);

Я решил, что связывать текстовый метод является слабым звеном с некоторым NSLog () методы, которые я поместил ранее. В этом примере термином и определением является NSStrings, которые действительно содержат правильное значение (я знаю так много наверняка). Любая справка ценилась бы. Я не вполне освоил портативный c.

1
задан user369760 17 June 2010 в 20:15
поделиться

1 ответ

Не знаю на 100%, почему он не работает, но у меня есть несколько предложений:

Избавьтесь от ; в конце оператора insert, у меня его никогда не было.

Поместите prepare и step в оператор if, например так

if(sqlite3_prepare_v2(db, sql, -1, &statement, NULL) != SQLITE_OK) {
        NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(db));
}
if (SQLITE_DONE != sqlite3_step(statement)) {
        NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(db));
}

Ничего из этого не поможет, но это может помочь вам понять, что не так.

И еще одна вещь, которая может помочь. Когда я работал с SQLite, было очень больно, если я вносил изменения в базу данных или вводил неправильные данные. Я потратил много времени на сброс симулятора iPhone и очистку сборки

2
ответ дан 2 September 2019 в 23:41
поделиться