如何在Android上的SQLite数据库中获取布尔字段的值?
我通常使用getString()
,getInt()
等来获取字段的值,但似乎没有getBoolean()
方法。
答案 0 :(得分:342)
是:
boolean value = cursor.getInt(boolean_column_index) > 0;
答案 1 :(得分:45)
SQLite中没有bool数据类型。使用您修复为0或1的int来实现该效果。请参阅datatypes reference上的SQLite 3.0。
答案 2 :(得分:20)
boolean value = (cursor.getInt(boolean_column_index) == 1);
答案 3 :(得分:8)
如果允许存储int的列也允许null,则此处的大多数答案都可能导致NumberFormatExceptions或“运算符未定义类型null,int”。 这样做的好方法是使用
Boolean.parseBoolean(cursor.getString(booleanColumnIndex));`
虽然您现在仅限于存储字符串“true”和“false”而不是0或1。
答案 4 :(得分:6)
您也可以使用
boolean value =cursor.getString(boolean_column_index).equals("True");
答案 5 :(得分:6)
在Ormlite Cursor找到的实现也检查Null,其他答案都没有。
public boolean getBoolean(int columnIndex) {
if (cursor.isNull(columnIndex) || cursor.getShort(columnIndex) == 0) {
return false;
} else {
return true;
}
}
答案 6 :(得分:3)
另一个选择
boolean value = (cursor.getString(column_index)).equals("1");
答案 7 :(得分:3)
boolean
数据类型在Cursor
中不可用。
您将在int
中获得结果,因此您需要将int
值转换为boolean
。
您可以使用
boolean b = cursor.getInt(boolean_column_index) > 0;
或
boolean b = (cursor.getInt(boolean_column_index) != 0);
答案 8 :(得分:2)
boolean b =(cursor.getInt(cursor.getColumnIndex(" item"))!= 0);
答案 9 :(得分: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;
}
答案 10 :(得分:0)
对于存储为 INTEGER
的可选(可为空)布尔值,您可以创建 Kotlin 扩展:
fun Cursor.getBoolean(columnIndex: Int): Boolean? {
return if (isNull(columnIndex))
null
else
getInt(columnIndex) != 0
}
并像这样使用它:
val value: Boolean? = cursor.getBoolean(boolean_column_index)
答案 11 :(得分:0)
这就是我使用的:
val work = Work()
work.id = cursor.getInt(0)
work.date = cursor.getString(1)
work.work_value = cursor.getFloat(2)
work.place = cursor.getString(3)
work.wind = cursor.getFloat(4)
work.isCompetition = cursor.getInt(5) > 0
return work