Obtenir le booléen de la base de données en utilisant Android et SQLite


169

Comment puis-je obtenir la valeur d'un champ booléen dans une base de données SQLite sur Android?

Je l'habitude d' utiliser getString(), getInt()etc. pour obtenir les valeurs de mes champs, mais il ne semble pas être une getBoolean()méthode.

Réponses:


351

C'est:

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

29
curseur.getInt (boolean_column_index)! = 0 est plus standard C.
Buttink

2
@Buttink >0est plus court en octets cependant: P
Gurupad Mamadapur


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

Même si elle ne correspond pas exactement à cette question (celle d'Alex est la plus proche), c'est une excellente réponse, et je vais l'utiliser.
Budimir Grom

10

La plupart des réponses ici peuvent résulter en NumberFormatExceptions ou "l'opérateur n'est pas défini pour les types null, int" si la colonne dans laquelle vous avez stocké l'int était également autorisée à contenir null. La façon décente de le faire serait d'utiliser

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

bien que vous soyez maintenant limité à stocker les chaînes "vrai" et "faux" plutôt que 0 ou 1.


5
Cela ne fonctionne pas. Boolean.parseBoolean prend des chaînes "true" ou "false". Si vous avez stocké votre valeur booléenne sur 0 ou 1, vous obtiendrez toujours false.
Gober

Si ce que dit Gober est vrai, alors cette réponse mérite d'être critiquée
Shervin Asgari

Ah, il a raison. Je pense que la clarté du résultat l'emporte sur le fait de devoir stocker les chaînes.
Sojurn

1
@ShervinAsgari dans l'autre réponse, si vous stockez votre booléen comme vrai ou faux, il deviendra toujours faux. Donc, il devrait également être critiqué avec votre logique.
Arda Kara du

6

Une implémentation trouvée sur Ormlite Cursor vérifie également Null, ce qu'aucune des autres réponses ne fait.

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

6

Vous pouvez aussi utiliser

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

5
equals () not contains
Shervin Asgari

3

Une autre option

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

3

boolean le type de données n'est pas disponible dans Cursor .

vous obtiendrez le résultat dans un int, vous devez donc convertir cette intvaleur en a boolean.

Vous pouvez soit utiliser

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

ou

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

2

booléen b = (cursor.getInt (cursor.getColumnIndex ("item"))! = 0);


0

Eh bien, c'est très 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;
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.