NOS1971 hat folgendes geschrieben : |
sind boolsche werte ein problem ? |
Tendenziell: ja. Es hängt sehr davon ab, wie du deinen Boolean in die Datenbank schreibst...und auch, wie er abgespeichert wird und du ihn am Ende dann wieder erhälst. Viele Datenbanken kennen an sich garkeinen Boolean-Datentyp.
www.sqlite.org/datatype3.html hat folgendes geschrieben: |
SQLite does not have a separate Boolean storage class. Instead, Boolean values are stored as integers 0 (false) and 1 (true). |
Wenn es Probleme gibt, deklariere das Feld gleich selbst als Integer. Definiere selbst Konstanten für true und false auf Basis dieser Integer. Beim Lesen kannst du dann leicht von Hand testen. Beispiel als Pseudocode:
Delphi-Quelltext
1: 2: 3:
| const DB_FALSE=0; DB_TRUE=1; db.SetFieldByName('myBoolField').AsInteger := DB_TRUE; result := not( db.GetFieldByName('myBoolField').AsInteger = DB_FALSE); |
Es mag auch direkt mit boolschen Datentypen gehen, aber ich bevorzuge den Umweg über Integer da er
- gleichen Speicherbedarf hat,
- leicht zu verstehen ist,
- auf Nummer sicher geht.
Nachteilig kann sein, dass man dann auch in SQL-Abfragen, welche diese boolschen Felder benutzen, diesen Umweg gehen muss (aus Sicht der Abstraktion unschön).
Solltest du damit nicht zufrieden sein, dann zeige mal den Code dazu, wie du die Bools in die Datenbank schreibst.