Obtenha booleano do banco de dados usando Android e SQLite

169

Como posso obter o valor de um campo booleano em um banco de dados SQLite no Android?

Eu costumo usar getString(), getInt()etc. para obter os valores dos meus campos, mas não parece haver um getBoolean()método.

Kevin Bradshaw
fonte

Respostas:

351

Isto é:

boolean value = cursor.getInt(boolean_column_index) > 0;
Alex Orlov
fonte
29
! cursor.getInt (boolean_column_index) = 0 é mais padrão C.
Buttink
2
@Buttink >0é mais curto em bytes: P
Gurupad Mamadapur
23
boolean value = (cursor.getInt(boolean_column_index) == 1);
Elvis
fonte
Mesmo que não corresponda exatamente a essa pergunta (a de Alex é a mais próxima), é uma excelente resposta, e usarei isso.
Budimir Grom
10

A maioria das respostas aqui pode resultar em NumberFormatExceptions ou "operador não está definido para os tipos nulos, int" se a coluna na qual você armazenou o int tiver permissão para manter também nulo. A maneira decente de fazer isso seria usar

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

embora agora você esteja limitado a armazenar as strings "true" e "false" em vez de 0 ou 1.

Sojurn
fonte
5
Isso não funciona. Boolean.parseBoolean usa seqüências de caracteres "true" ou "false". Se você armazenou seu booleano como 0 ou 1, sempre será falso.
Gober
Se o que Gober diz é verdade, então esta resposta merece ser downvoted
Shervin Asgari
Ah, ele está certo. Eu acho que a clareza do resultado supera a necessidade de armazenar as strings.
sojurn
1
@ ShervinAsgari na outra resposta, se você armazenar seu booleano como verdadeiro ou falso, ele sempre será falso. Portanto, isso também deve ser eliminado com sua lógica.
Arda Kara
6

Uma implementação encontrada no Cursor Ormlite também verifica Null, o que nenhuma das outras respostas faz.

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

Você também pode usar

boolean value =cursor.getString(boolean_column_index).equals("True");
zoeb
fonte
5
é igual a () não contém
Shervin Asgari
3

Outra opção

boolean value = (cursor.getString(column_index)).equals("1");
Gokhan Arik
fonte
3

booleantipo de dados não está disponível em Cursor.

você obterá o resultado em um int, então precisará converter esse intvalor em a boolean.

Você pode usar

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

ou

boolean b = (cursor.getInt(boolean_column_index) != 0);
Ravi
fonte
2

booleano b = (cursor.getInt (cursor.getColumnIndex ("item")))! = 0);

RedBullet
fonte
0

Bem, isso é muito simples:

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