2010-11-03 16 views

risposta

322

Si tratta di:

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

cursor.getInt (boolean_column_index)! = 0 è più standard C. – Buttink

+1

@Buttink '> 0 'è più breve in byte però : P –

43

Non esiste alcun tipo di dati bool in SQLite. Usa un int che correggi a 0 o 1 per ottenere quell'effetto. Vedi lo datatypes reference su SQLite 3.0.

5

È anche possibile utilizzare

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

equals() non contiene –

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

Anche se non corrisponde esattamente a questa domanda (Alex's è il più vicino), è una risposta eccellente, e userò questo. –

8

La maggior parte delle risposte qui può provocare NumberFormatExceptions o "operatore non è definito per i tipi nullo, int" se la colonna in cui hai memorizzato l'int era autorizzata a contenere anche null. Il modo decente per farlo sarebbe quello di utilizzare

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

se si sta ora limitati a memorizzare le stringhe "vero" e "falso", piuttosto che 0 o 1.

+5

Questo non funziona. Boolean.parseBoolean prende le stringhe "true" o "false". Se hai memorizzato il tuo booleano come 0 o 1, otterrai sempre false. – Gober

+0

Se quello che dice Gober è vero, allora questa risposta merita di essere downvoted –

+0

Ah, ha ragione. Penso che la chiarezza del risultato superi il dover memorizzare le stringhe. – Sojurn

3

Un'altra opzione

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

Un'implementazione trovata a Ormlite Cursor controlla anche il valore null che nessuna delle altre risposte fa.

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

boolean b = (cursor.getInt (cursor.getColumnIndex ("voce")) = 0!);

3

boolean tipo di dati non disponibile in Cursor.

si otterrà il risultato in un int, quindi è necessario convertire tale valore int in un boolean.

È possibile utilizzare

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

o

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