Приложение iPhone падает с помощью sqlite3_bind_text () - PullRequest
1 голос
/ 18 июня 2010

Я пытаюсь создать простое приложение, которое хранит и отображает флэш-карты, однако я ужасно переживаю, что мой 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 (), которые я разместил ранее.В этом примере term и def - это строки NSStrings, которые содержат правильное значение (я точно знаю это).Любая помощь будет оценена.Я не совсем освоил портативный c.

1 Ответ

2 голосов
/ 18 июня 2010

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

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

Поместите метод подготовки и перейдите в оператор 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 и очистку сборки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...