Получить логическое значение из базы данных с помощью Android и SQLite


169

Как я могу получить значение логического поля в SQLite данных на Android?

Я обычно использую getString(), getInt()и т. Д., Чтобы получить значения моих полей, но, похоже, нет getBoolean()метода.

Ответы:




23
boolean value = (cursor.getInt(boolean_column_index) == 1);

Даже если он не совсем соответствует этому вопросу (Алекс самый близкий), это отличный ответ, и я воспользуюсь этим.
Будимир Гром

10

Большинство ответов здесь могут привести к NumberFormatExceptions или «оператор не определен для типов null, int», если столбцу, в котором вы сохранили int, было разрешено также содержать значение null. Достойный способ сделать это будет использовать

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

хотя теперь вы ограничены хранением строк «истина» и «ложь», а не 0 или 1.


5
Это не работает. Boolean.parseBoolean принимает строки «истина» или «ложь». Если вы сохранили логическое значение как 0 или 1, вы всегда получите false.
Гобер

Если то, что говорит Гобер, является правдой, то этот ответ заслуживает того, чтобы его проголосовали
Шервин Аскари

Ах, он прав. Я думаю, что ясность результата перевешивает необходимость хранить строки.
Сожурн

1
@ShervinAsgari в другом ответе, если вы сохраните логическое значение как истинное или ложное, оно всегда будет ложным. Так что это должно быть опущено тоже с вашей логикой.
Арда Кара

6

Реализация, найденная в Ormlite Cursor, также проверяет наличие Null, чего не делает ни один из других ответов.

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



3

boolean тип данных недоступен в Cursor .

вы получите результат в int, так что вам нужно преобразовать это intзначение в boolean.

Вы можете использовать

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

или

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


0

Ну, это очень просто:

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;
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.