Я вставляю данные в таблицу, и sqlite3_step возвращает SQLITE_DONE. Но иногда в таблице нет новых данных! Даже если я выполню проверку сразу после добавления данных.
Вот мой код:
sqlite3_stmt *addTranslationStmt2 = NULL;
if(sqlite3_prepare_v2( database , "INSERT INTO translations(lang1_wordid, lang2_wordid) VALUES(?, ?)" , -1, & addTranslationStmt2, NULL) != SQLITE_OK)
{
NSLog(@"statement prepare error");
addTranslationStmt2 = NULL;
return -1;
}
sqlite3_bind_int(addTranslationStmt2, 1, word_id);
sqlite3_bind_int(addTranslationStmt2, 2, translation_id);
if(sqlite3_step(addTranslationStmt2) != SQLITE_DONE)
{
NSLog(@"addTranslationStmt2 error: '%s'", sqlite3_errmsg(database));
sqlite3_reset(addTranslationStmt2);
return -1;
}
sqlite3_reset(addTranslationStmt2);
if (![self wordHasTranslation: word_id translation_id: translation_id])
NSLog(@"And after all translation was not added even though sqlite3_step returns SQLITE_DONE!");
Поэтому мне интересно, почему вызывается последняя упомянутая функция журнала. Это означает, что после добавления данных в таблице отсутствуют данные. Иногда это добавляет, а иногда нет.
Где может быть проблема?
Заранее спасибо.
UPDATE:
Я обнаружил, что это происходит только при создании новой базы данных. После перезапуска приложения оно работает правильно. Но если создается новая база данных, странное поведение возвращается.