Wie erhalte ich den Wert eines booleschen Felds in einer SQLite Datenbank auf Android?
Ich benutze normalerweise getString()
, getInt()
usw., um die Werte meiner Felder zu erhalten, aber es scheint keine zu geben getBoolean()
Methode.
Kevin Bradshaw
Wie erhalte ich den Wert eines booleschen Felds in einer SQLite Datenbank auf Android?
Ich benutze normalerweise getString()
, getInt()
usw., um die Werte meiner Felder zu erhalten, aber es scheint keine zu geben getBoolean()
Methode.
Alex Orlow
Es ist:
boolean value = cursor.getInt(boolean_column_index) > 0;
cursor.getInt(boolean_column_index) != 0 ist mehr Standard-C.
– David Strumpf
28. Februar 2014 um 21:53 Uhr
@ Buttin >0
ist aber kürzer in Bytes 😛
– Gurupad Mamadapur
9. Februar 2017 um 14:52 Uhr
Stapelüberlauf 不爱不行
– linjiejun
7. Januar 2021 um 2:40 Uhr
Einen optionalen (nullable) booleschen Wert finden Sie in der folgenden Antwort: stackoverflow.com/a/65828389/7493938
– Mario Huizinga
21. Januar 2021 um 13:26 Uhr
NG.
Es gibt keinen bool-Datentyp in SQLite. Verwenden Sie ein int, das Sie auf 0 oder 1 fixieren, um diesen Effekt zu erzielen. Siehe die Datentypen Referenz an SQLite 3.0.
boolean value = (cursor.getInt(boolean_column_index) == 1);
Auch wenn es dieser Frage nicht genau entspricht (die von Alex ist am nächsten), ist es eine ausgezeichnete Antwort, und ich werde diese verwenden.
– Budimir Grom
16. Dezember 2014 um 15:34 Uhr
Sojurn
Die meisten Antworten hier können zu NumberFormatExceptions oder “Operator ist für die Typen null, int nicht definiert” führen, wenn die Spalte, in der Sie die int gespeichert haben, auch null enthalten durfte. Der anständige Weg, dies zu tun, wäre die Verwendung
Boolean.parseBoolean(cursor.getString(booleanColumnIndex));`
obwohl Sie jetzt darauf beschränkt sind, die Zeichenfolgen “true” und “false” anstelle von 0 oder 1 zu speichern.
rtack
Eine Implementierung gefunden unter Ormlite-Cursor prüft auch auf Null, was keine der anderen Antworten tut.
public boolean getBoolean(int columnIndex) {
if (cursor.isNull(columnIndex) || cursor.getShort(columnIndex) == 0) {
return false;
} else {
return true;
}
}
AndyD273
Sie können auch verwenden
boolean value =cursor.getString(boolean_column_index).equals("True");
Gökhan Arik
Andere Option
boolean value = (cursor.getString(column_index)).equals("1");