Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[erledigt] SQLite-Abfrage eines bool-Wertes liefert immer false, obwohl in der DB True steht
andre67
myCSharp.de - Member

Avatar #avatar-3419.gif


Dabei seit:
Beiträge: 15
Herkunft: Berlin/München

Themenstarter:

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

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von andre67 am .
private Nachricht | Beiträge des Benutzers
Chris360
myCSharp.de - Member



Dabei seit:
Beiträge: 41
Herkunft: DE-NRW

beantworten | zitieren | melden

Hi andre67,

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

Gruß Chris
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10083

beantworten | zitieren | melden

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

Woher weist du denn das da was anderes drin steht?
private Nachricht | Beiträge des Benutzers
andre67
myCSharp.de - Member

Avatar #avatar-3419.gif


Dabei seit:
Beiträge: 15
Herkunft: Berlin/München

Themenstarter:

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von andre67 am .
private Nachricht | Beiträge des Benutzers