データをテーブルに挿入するときに、sqlite3_stepがSQLITE_DONEを返します。しかし時にはテーブルに新しいデータがありません!たとえデータが追加された直後にチェックを行っても。奇妙なSQLiteの動作
は、ここに私のコードです:最後に言及したログ機能が呼び出されているんなぜ
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!");
は、だから私は疑問に思って。これは、データを追加した後にテーブルにデータがないことを意味します。ときどきそれが追加され、時にはそうではありません。
どこに問題がありますか? ありがとうございます。
更新: これは、新しいデータベースが作成された場合にのみ発生することがわかりました。アプリケーションを再起動すると、正しい方法で動作します。しかし、新しいデータベースが作成されると、奇妙な動作が戻ってきます。
wordHasTranslationに問題がある可能性はありますか? – outis
いいえ、データが追加されたかどうかは私には分かりません。私は手動でデータベースをチェックしました - 新しいデータの兆候はありません。 コードの他の部分に他のデータを挿入しても、すべてが完璧に機能します。 –