Obtenga booleanos de la base de datos con Android y SQLite


169

¿Cómo puedo obtener el valor de un campo booleano en una base de datos SQLite en Android?

Usualmente uso getString(), getInt()etc. para obtener los valores de mis campos, pero no parece haber un getBoolean()método.

Respuestas:


351

Es:

boolean value = cursor.getInt(boolean_column_index) > 0;

29
cursor.getInt (boolean_column_index)! = 0 es más estándar C.
Buttink

2
Sin embargo, @Buttink >0es más corto en bytes: P
Gurupad Mamadapur


23
boolean value = (cursor.getInt(boolean_column_index) == 1);

Aunque no corresponde exactamente a esta pregunta (Alex es la más cercana), es una excelente respuesta, y la usaré.
Budimir Grom

10

La mayoría de las respuestas aquí pueden dar como resultado NumberFormatExceptions o "el operador no está definido para los tipos nulo, int" si la columna en la que almacenó el int también podía contener nulo. La forma decente de hacer esto sería usar

Boolean.parseBoolean(cursor.getString(booleanColumnIndex));`

aunque ahora está limitado a almacenar las cadenas "verdadero" y "falso" en lugar de 0 o 1.


55
Esto no funciona. Boolean.parseBoolean toma cadenas "verdaderas" o "falsas". Si ha almacenado su valor booleano como 0 o 1, siempre obtendrá falso.
Gober

Si lo que dice Gober es cierto, entonces esta respuesta merece ser rechazada
Shervin Asgari

Ah, tiene razón. Creo que la claridad del resultado supera la necesidad de almacenar las cadenas.
Sojurn

1
@ShervinAsgari en la otra respuesta, si almacena su booleano como verdadero o falso, siempre será falso. Por lo tanto, también debería ser rechazado con su lógica.
Arda Kara

6

Una implementación que se encuentra en Ormlite Cursor también verifica Null, lo que ninguna de las otras respuestas hace.

   public boolean getBoolean(int columnIndex) {
        if (cursor.isNull(columnIndex) || cursor.getShort(columnIndex) == 0) {
            return false;
        } else {
            return true;
        }
    }

6

También puedes usar

boolean value =cursor.getString(boolean_column_index).equals("True");

55
igual () no contiene
Shervin Asgari

3

Otra opción

boolean value = (cursor.getString(column_index)).equals("1");

3

booleantipo de datos no está disponible en Cursor.

obtendrá el resultado en un int, por lo que debe convertir ese intvalor en a boolean.

Puedes usar

boolean b = cursor.getInt(boolean_column_index) > 0;

o

boolean b = (cursor.getInt(boolean_column_index) != 0);

2

boolean b = (cursor.getInt (cursor.getColumnIndex ("item"))! = 0);


0

Bueno, eso es muy simple:

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;
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.