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()
.
Il est:
boolean value = cursor.getInt(boolean_column_index) > 0;
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. .
boolean value = (cursor.getInt(boolean_column_index) == 1);
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.
Vous pouvez aussi utiliser
boolean value =cursor.getString(boolean_column_index).equals("True");
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;
}
}
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);
Une autre option
boolean value = (cursor.getString(column_index)).equals("1");
booléen b = (cursor.getInt (cursor.getColumnIndex ("item"))!! = 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;
}