Ich habe eine SQLite-Datenbank und ich füge neue Wörter hinzu. Das Problem ist, dass ich sehe, dass sie erst nach einem Neustart der Anwendung zu einer Tabelle hinzugefügt werden. Die "SELECT" -Anweisung "sieht" neu hinzugefügte Elemente nicht, bevor sie die Anwendung neu startet.SQLite-Datenbank - kann keine Updates sehen
Warum kann das passieren?
Ich erstelle eine Art Wörterbuch. Hier ist, wie ich neue Elemente hinzuzufügen:
const char *sql_query = "INSERT INTO words(word) VALUES(?)";
if(sqlite3_prepare_v2(database, sql_query, -1, &addWordsStmt, NULL) != SQLITE_OK)
{
return FALSE;
}
sqlite3_bind_text(addWordsStmt, 1, [ word UTF8String], -1, SQLITE_TRANSIENT);
if(sqlite3_step(addWordsStmt) != SQLITE_DONE)
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
sqlite3_reset(addWordsStmt);
sqlite3_finalize(addWordsStmt);
Und hier ist mein Retrieval-Code:
const char *sql_query = "SELECT word FROM words WHERE id=?";
if(sqlite3_prepare_v2(database, sql_query, -1, &getWordsStmt, NULL) != SQLITE_OK)
{
return;
}
sqlite3_bind_int(getWordsStmt, 1, wordid);
if(sqlite3_step(getWordsStmt) != SQLITE_ROW)
{
NSLog(@"Error while getting data. '%s'", sqlite3_errmsg(database));
sqlite3_reset(getWordsStmt);
return;
}
NSString *word = [NSString stringWithUTF8String:(char *)sqlite3_column_text(getWordsStmt, 0)];
sqlite3_reset(getWordsStmt);
sqlite3_finalize(getWordsStmt);
Wie fügen Sie die Wörter? Wie suchst du nach ihnen? Zeigen Sie uns die Quelle! –
Ich würde versuchen NSLogging das Ergebnis jedes einzelnen sqlite3_ Aufrufs, um zu sehen, alles wird erwartet, aber Ihr Add-Code sieht aus wie es sollte wahrscheinlich funktionieren. Wie sieht Ihre Abrufquelle aus? –