173 votes

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

Comment obtenir la valeur d'un champ booléen dans un fichier SQLite sur Android ?

J'utilise habituellement getString() , getInt() etc. pour obtenir les valeurs de mes champs, mais il ne semble pas y avoir d'outil de gestion de l'information. getBoolean() méthode.

360voto

Alex Orlov Points 9229

Elle l'est :

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

31 votes

Cursor.getInt(boolean_column_index) != 0 est plus standard en C.

2 votes

@Buttink >0 est cependant plus courte en octets :P

0 votes

Stackoverflow

46voto

NG. Points 12989

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 en SQLite 3.0 .

24voto

Elvis Points 330
boolean value = (cursor.getInt(boolean_column_index) == 1);

0 votes

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.

11voto

Sojurn Points 162

La plupart des réponses ici peuvent donner lieu à des NumberFormatExceptions ou à "operator is undefined for the 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 faire cela serait d'utiliser

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

mais vous êtes maintenant limité au stockage des chaînes "true" et "false" plutôt que 0 ou 1.

5 votes

Cela ne fonctionne pas. Boolean.parseBoolean prend les chaînes "true" ou "false". Si vous avez enregistré votre booléen sous la forme 0 ou 1, vous obtiendrez toujours false.

0 votes

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

0 votes

Ah, il a raison. Je pense que la clarté du résultat l'emporte sur la nécessité de stocker les cordes.

6voto

rtack Points 52

Une implémentation trouvée à Curseur Ormlite vérifie également la présence de 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;
        }
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X