Laden...

[erledigt] SQLite-Abfrage eines bool-Wertes liefert immer false, obwohl in der DB True steht

Erstellt von andre67 vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.859 Views
andre67 Themenstarter:in
15 Beiträge seit 2012
vor 11 Jahren
[erledigt] SQLite-Abfrage eines bool-Wertes liefert immer false, obwohl in der DB True steht

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

C
40 Beiträge seit 2011
vor 11 Jahren

Hi andre67,

das reader Objekt sollte die Methode GetBoolean bereitstellen. Dieser übergibst du den Spaltennamen als String.

Gruß Chris

F
10.010 Beiträge seit 2004
vor 11 Jahren

Wenn der Cast das Problem wäre bekämst du da eine InvalidCastException.

Woher weist du denn das da was anderes drin steht?

andre67 Themenstarter:in
15 Beiträge seit 2012
vor 11 Jahren

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