Вопрос по sqlite – Возвращает ли «вставка» в SQLite SQLITE_OK или SQLITE_DONE?

3

Что означает «вставить»? в SQLite вернуть в случае успеха?

Я всегда считал, что это должен быть SQLITE_DONE, но недавно в своих журналах я обнаружил следующую строку:

sqlite3_step error: 'not an error'

И вот код, который регистрирует упомянутую строку:

prepareStatement(addTranslationStmt2, "INSERT INTO translations(lang1_wordid, lang2_wordid) VALUES(?, ?)");
if (!addTranslationStmt2) return -2;

sqlite3_bind_int(addTranslationStmt2, 1, word_id);
sqlite3_bind_int(addTranslationStmt2, 2, translation_id);

if(sqlite3_step(addTranslationStmt2) != SQLITE_DONE)
{
    NSLog(@"sqlite3_step error: '%s'", sqlite3_errmsg(database));
    sqlite3_reset(addTranslationStmt2);
    return -1;
}

sqlite3_reset(addTranslationStmt2);

Мне интересно, почему это работает в большинстве случаев. Должен ли я изменить SQLITE_DONE в своем коде на SQLITE_OK?

Благодарю.

Проверьтеcode.google.com/p/database-adt Macarse
Error: User Rate Limit Exceeded S.Lott

Ваш Ответ

3   ответа
3

В подобных случаях мне нравится смотреть на примеры кода. Вот несколько хороших:

http://sqlite.phxsoftware.com/forums/p/76/6659.aspx

Справочник по кодам результатов SQLiteError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Подробности поведенияsqlite3_step()Error: User Rate Limit Exceededsqlite3_prepare_v2() а такжеsqlite3_prepare16_v2() или старый устаревший интерфейсsqlite3_prepare() а такжеsqlite3_prepare16().

Error: User Rate Limit ExceededSQLITE_BUSY, SQLITE_DONE, SQLITE_ROW, SQLITE_ERROR, или жеSQLITE_MISUSEError: User Rate Limit Exceeded

8

SQLITE_DONE

http://www.sqlite.org/c3ref/step.html

Вы также можете попробовать распечатать код ошибки, чтобы выяснить, в чем проблема.

1

Переключение с «Отладка» Конфигурация для «выпуска» решил проблему для меня.

Похожие вопросы