web-dev-qa-db-fra.com

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

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

J'utilise habituellement getString(), getInt(), etc. pour obtenir les valeurs de mes champs, mais il ne semble pas exister de méthode getBoolean().

166
Kevin Bradshaw

Il est:

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

Il n'y a pas de type de données bool dans SQLite. Utilisez un int que vous fixez à 0 ou 1 pour obtenir cet effet. Voir le référence aux types de données sur SQLite 3. .

45
NG.
boolean value = (cursor.getInt(boolean_column_index) == 1);
21
Elvis

La plupart des réponses peuvent aboutir à 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 est é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 "true" et "false" plutôt que 0 ou 1.

9
Sojurn

Vous pouvez aussi utiliser

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

Une implémentation trouvée à Ormlite Cursor vérifie également si aucune réponse n’est donnée par Null.

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

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 valeur int en un boolean.

Vous pouvez soit utiliser

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

ou

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

Une autre option

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

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

2
RedBullet

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;
}
0
silexcorp