Odpowiedzi:
To jest:
boolean value = cursor.getInt(boolean_column_index) > 0;
>0
jest jednak krótszy w bajtach: P
W SQLite nie ma typu danych bool. Aby osiągnąć ten efekt, użyj wartości int, którą ustawiasz na 0 lub 1. Zobacz dokumentację dotyczącą typów danych w SQLite 3.0 .
boolean value = (cursor.getInt(boolean_column_index) == 1);
Większość odpowiedzi w tym miejscu może skutkować NumberFormatExceptions lub „operator jest niezdefiniowany dla typów null, int”, jeśli kolumna, w której zapisano int, może również zawierać wartość null. Przyzwoitym sposobem na zrobienie tego byłoby użycie
Boolean.parseBoolean(cursor.getString(booleanColumnIndex));`
chociaż teraz jesteś ograniczony do przechowywania ciągów „prawda” i „fałsz” zamiast 0 lub 1.
Implementacja znaleziona w Ormlite Cursor sprawdza również wartość Null, czego nie robi żadna z innych odpowiedzi.
public boolean getBoolean(int columnIndex) {
if (cursor.isNull(columnIndex) || cursor.getShort(columnIndex) == 0) {
return false;
} else {
return true;
}
}
Możesz także użyć
boolean value =cursor.getString(boolean_column_index).equals("True");
Inna opcja
boolean value = (cursor.getString(column_index)).equals("1");
Cóż, to bardzo proste:
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;
}