Как я могу получить значение логического поля в базе данных SQLite на Android?
Я обычно использую getString()
, getInt()
и т.д., чтобы получить значения моих полей, но, похоже, не существует метода getBoolean()
.
Как я могу получить значение логического поля в базе данных SQLite на Android?
Я обычно использую getString()
, getInt()
и т.д., чтобы получить значения моих полей, но, похоже, не существует метода getBoolean()
.
Это:
boolean value = cursor.getInt(boolean_column_index) > 0;
В SQLite нет типа данных bool. Используйте int, который вы исправляете до 0 или 1 для достижения этого эффекта. См. Ссылку datatypes на SQLite 3.0.
boolean value = (cursor.getInt(boolean_column_index) == 1);
Большинство ответов здесь могут привести к NumberFormatExceptions или "operator undefined для типов null, int", если в столбце, в котором вы сохраняли int, было также разрешено также содержать null. Пристойный способ сделать это - использовать
Boolean.parseBoolean(cursor.getString(booleanColumnIndex));`
хотя теперь вы ограничены хранением строк "true" и "false", а не 0 или 1.
Вы также можете использовать
boolean value =cursor.getString(boolean_column_index).equals("True");
Реализация, найденная в Ormlite Cursor, также проверяет, что Null не отвечает ни на один из других ответов.
public boolean getBoolean(int columnIndex) {
if (cursor.isNull(columnIndex) || cursor.getShort(columnIndex) == 0) {
return false;
} else {
return 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 = (cursor.getInt(cursor.getColumnIndex( "item" ))!= 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;
}