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

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

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

9 ответов


Это:

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

в SQLite нет типа данных bool. Используйте int, который вы исправляете до 0 или 1 для достижения этого эффекта. Вижу datatypes reference on SQLite 3.0.


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

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

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

хотя теперь вы ограничены хранением строк "true" и "false", а не 0 или 1.


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

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

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

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

другой вариант

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

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

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

можно использовать

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

или

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

boolean b = (курсор.метода getint(курсор.getColumnIndex("элемент")) != 0);