2010-11-03 4 views

Répondre

322

Il est:

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

cursor.getInt (boolean_column_index)! = 0 est plus standard C. – Buttink

+1

@Buttink '> 0' est plus courte en octets si : P –

43

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 datatypes reference sur SQLite 3.0.

5

Vous pouvez également utiliser

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

est égal à() ne contient pas –

18
boolean value = (cursor.getInt(boolean_column_index) == 1); 
+0

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

8

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

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

si vous êtes 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 booléen comme 0 ou 1, vous obtiendrez toujours faux. – Gober

+0

Si ce que dit Gober est vrai, alors cette réponse mérite d'être downvoted –

+0

Ah, il a raison. Je pense que la clarté du résultat l'emporte sur le fait d'avoir à stocker les cordes. – Sojurn

3

Une autre option

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

Une implémentation trouvée à Ormlite Cursor vérifie également pour Null qu'aucune autre réponse ne fait.

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

booléenne b = (cursor.getInt (cursor.getColumnIndex ("point")) = 0!);

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

Vous pouvez utiliser

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

ou

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