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

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

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

Ответ 1

Это:

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

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

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

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

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

или

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

Ответ 9

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

Ответ 10

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

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