Ich führe eine SELECT-Anweisung in einer SQLite3-Datenbank aus. Wenn das Ergebnis die erste Zeile in der Tabelle sein sollte, ist der Rückgabewert immer SQLITE_DONE anstelle von SQLITE_ROW, und ich kann das Ergebnis nicht erhalten.SQLITE3 step() gibt SQLITE_DONE für eine Tabelle mit nur einer Zeile zurück
do {
ret.error = sqlite3_step(stmt);
debug("error: %d",ret.error);
if(ret.error == SQLITE_ROW)
{
[...]
} } while(ret.error != SQLITE_ERROR && ret.error != SQLITE_DONE &&
ret.error != SQLITE_MISUSE);
Kann mir jemand sagen, was ich falsch mache? (Die Abfrage ist korrekt ...)
Sind Sie 100% sicher, dass der Code innerhalb der inneren "if" -Anweisung ('if (ret.error == SQLITE_ROW)') nie erreicht wird? Wenn "stmt" gültig ist, ist der endgültige Wert von "ret.error" immer SQLITE_DONE. Vorschlag: Was ist die SQL-Anweisung ('stmt'), wie bereiten Sie sie vor und was ist die Zeile in Ihrer Datenbank, die Sie abrufen möchten? –
Ich habe nur den Code neu geschrieben, jetzt scheint es zu funktionieren, nicht sicher, was der Fehler war – tom