verwendetes Datenbanksystem: SQLite
Hallo zusammen!
Beim Abfragen eines BOOLEAN-Wertes aus einer SQLite-DB bekomme ich als Ergebnis immer "False", obwohl in diesem Feld "True" steht. Alle anderen Werte (Strings) werden korrekt ausgegeben.
Ich lese den Datensatz per SQLiteDataReader mit einer While-Schleife aus :
while (reader.Read())
{
this.boolErg = (bool)reader[7];
...
Das Speichern des Wertes erfolgt mit dem Statement "INSERT INTO" und funktioniert.
Noch zur Info:
Als zielframework der Anwendung musste ich allerdings ".net Framework 2.0" einstellen. Das muss auch so bleiben.
Was mache ich falsch, bzw. übersehe ich? Kommt der Fehler von dem Cast? Aber auch, wenn ich nicht caste und mit
reader[7].ToString();
in eine String-Variable schreibe, bekomme ich immer "False".
Vielen Dank für Eure Hilfe!
Gruß
Andre
Hi andre67,
das reader Objekt sollte die Methode GetBoolean bereitstellen. Dieser übergibst du den Spaltennamen als String.
Gruß Chris
Wenn der Cast das Problem wäre bekämst du da eine InvalidCastException.
Woher weist du denn das da was anderes drin steht?
Hey Chris,
danke für den Wink mit GetBoolean! Klappt wunderbar. Obwohl ich jetzt folgendes herausgefunden habe:
"SQLite does not have a separate Boolean storage class. Instead, Boolean values are stored as integers 0 (false) and 1 (true)."
Habe dann mit int gearbeitet und es funktionierte natürlich. Allerdings finde ich die Lösung mit GetBoolean besser, weil ich "True" und "False" in die DB schreibe. Das macht der SQLite-DB komischerweise nichts aus, was ich auch wiederum nicht verstehe.
Wie auch immer - auf jeden Fall dazu gelernt 👍
@FZelle:
Stimmt, leuchtet mir jetzt ein mit der Exception.
Und wenn ich Deine Frage richtig verstehe: Ich habe mir das Ergebnis mit einer MessageBox ausgeben lassen.
Auf jeden Fall vielen Dank Euch beiden für Eure Mühe.
GetBoolean ist die Lösung!
Viele Grüße und eine schöne Woche
Andre