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.

Respostas:


351

Isto é:

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

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

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.


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

6

Você também pode usar

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

5
é igual a () não contém
Shervin Asgari

3

Outra opção

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

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

2

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


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;
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.