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;
}