Come posso ottenere il valore di un campo booleano in un database SQLite su Android?
Di solito uso getString()
, getInt()
ecc. Per ottenere i valori dei miei campi, ma non sembra esserci un getBoolean()
metodo.
Come posso ottenere il valore di un campo booleano in un database SQLite su Android?
Di solito uso getString()
, getInt()
ecc. Per ottenere i valori dei miei campi, ma non sembra esserci un getBoolean()
metodo.
Risposte:
È:
boolean value = cursor.getInt(boolean_column_index) > 0;
>0
è più breve in byte però: P
Non esiste un tipo di dati bool in SQLite. Usa un int che hai fissato a 0 o 1 per ottenere quell'effetto. Vedere il riferimento ai tipi di dati su SQLite 3.0 .
boolean value = (cursor.getInt(boolean_column_index) == 1);
La maggior parte delle risposte qui può provocare NumberFormatExceptions o "l'operatore non è definito per i tipi null, int" se la colonna in cui è stato memorizzato l'int è stata autorizzata a contenere anche null. Il modo decente per farlo sarebbe usare
Boolean.parseBoolean(cursor.getString(booleanColumnIndex));`
anche se ora sei limitato a memorizzare le stringhe "true" e "false" anziché 0 o 1.
Un'implementazione trovata su Ormlite Cursor verifica anche la presenza di 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;
}
}
Puoi anche usare
boolean value =cursor.getString(boolean_column_index).equals("True");
Un'altra opzione
boolean value = (cursor.getString(column_index)).equals("1");
Bene, è molto semplice:
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;
}