Wie kann ich den Wert eines booleschen Felds in einer SQLite- Datenbank unter Android ermitteln?
Normalerweise verwende ich getString()
, getInt()
usw. die Werte meiner Felder zu bekommen, aber es scheint nicht zu sein getBoolean()
Verfahren.
Wie kann ich den Wert eines booleschen Felds in einer SQLite- Datenbank unter Android ermitteln?
Normalerweise verwende ich getString()
, getInt()
usw. die Werte meiner Felder zu bekommen, aber es scheint nicht zu sein getBoolean()
Verfahren.
Antworten:
Es ist:
boolean value = cursor.getInt(boolean_column_index) > 0;
>0
ist in Bytes allerdings kürzer: P
In SQLite gibt es keinen Bool-Datentyp. Verwenden Sie ein int, das Sie auf 0 oder 1 festlegen, um diesen Effekt zu erzielen. Siehe die Datentypreferenz unter SQLite 3.0 .
boolean value = (cursor.getInt(boolean_column_index) == 1);
Die meisten Antworten hier können zu NumberFormatExceptions oder "Operator ist für die Typen null, int undefiniert" führen, wenn die Spalte, in der Sie das int gespeichert haben, auch null enthalten durfte. Der anständige Weg, dies zu tun, wäre zu verwenden
Boolean.parseBoolean(cursor.getString(booleanColumnIndex));`
Sie können jetzt jedoch nur noch die Zeichenfolgen "true" und "false" anstelle von 0 oder 1 speichern.
Eine bei Ormlite Cursor gefundene Implementierung sucht auch nach Null, was bei keiner der anderen Antworten der Fall ist .
public boolean getBoolean(int columnIndex) {
if (cursor.isNull(columnIndex) || cursor.getShort(columnIndex) == 0) {
return false;
} else {
return true;
}
}
Sie können auch verwenden
boolean value =cursor.getString(boolean_column_index).equals("True");
Andere Option
boolean value = (cursor.getString(column_index)).equals("1");
Nun, das ist sehr einfach:
public boolean getBooleanState(SQLiteDatabase db){
boolean result = false;
try{
String QUERY = "SELECT " + BOOLEAN_DATA + " FROM " + TABLE_NAME + " WHERE " + ID + " = 1";
Cursor cursor = db.rawQuery(QUERY, null);
if (cursor.moveToFirst()){
if(cursor.getString(0).equalsIgnoreCase("1")){
result = true;
}
}
c.close();
}catch(Exception ee){
Log.e(TAG, "err getBooleanState: " + TABLE_NAME );
}
return result;
}