Получить логическое значение из базы данных с помощью Android и SQLite - PullRequest
166 голосов
/ 03 ноября 2010

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

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

Ответы [ 9 ]

343 голосов
/ 03 ноября 2010

Это:

boolean value = cursor.getInt(boolean_column_index) > 0;
45 голосов
/ 03 ноября 2010

В SQLite нет типа данных bool. Используйте int, который вы устанавливаете на 0 или 1, чтобы достичь этого эффекта. См. Справочник типов данных на SQLite 3.0 .

20 голосов
/ 25 ноября 2011
boolean value = (cursor.getInt(boolean_column_index) == 1);
9 голосов
/ 16 октября 2012

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

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

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

6 голосов
/ 12 декабря 2013

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

   public boolean getBoolean(int columnIndex) {
        if (cursor.isNull(columnIndex) || cursor.getShort(columnIndex) == 0) {
            return false;
        } else {
            return true;
        }
    }
6 голосов
/ 29 июля 2011

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

boolean value =cursor.getString(boolean_column_index).equals("True");
3 голосов
/ 29 декабря 2015

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

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

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

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

или

boolean b = (cursor.getInt(boolean_column_index) != 0);
3 голосов
/ 04 июня 2013

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

boolean value = (cursor.getString(column_index)).equals("1");
2 голосов
/ 20 ноября 2014

логический b = (cursor.getInt (cursor.getColumnIndex ("item"))! = 0);

...