使用Android和SQLite从数据库中获取布尔值

时间:2010-11-03 14:29:52

标签: java android sqlite boolean

如何在Android上的SQLite数据库中获取布尔字段的值?

我通常使用getString()getInt()等来获取字段的值,但似乎没有getBoolean()方法。

12 个答案:

答案 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