从数据库android sqlite获取并设置布尔类型

时间:2014-10-13 14:42:52

标签: android xml database sqlite boolean

我是Android开发的新手,所以我不知道如何处理这个问题。 我的代码中的提取部分有问题,我想得到我的表的所有行但是这里有一些布尔类型的问题

public ArrayList<UserMealUnit> getUserMealUnit() {

    ArrayList<UserMealUnit> result = null;
    SQLiteDatabase myDataBase = null;
    Cursor cursor = null;
    try {
        myDataBase = openHelper.getWritableDatabase();
        cursor = myDataBase.query(TABLE_USERMEALUNIT, new String[] { "*" }, null, null,
                null, null, null);
        if (cursor.moveToFirst()) {
            result = new ArrayList<UserMealUnit>();
            do {
                result.add(extractUserMealUnit(cursor));
            } while (cursor.moveToNext());
        }
    } catch (Exception e) {
        Log.e(TAG, "Exception: " + e.getMessage());
    } 
    finally {
        if (cursor != null) {
            cursor.close();
        }
        myDataBase.close();
    }
    return result;      
}

//extract

private UserMealUnit extractUserMealUnit(Cursor cursor) {
    UserMealUnit usermealunit = new UserMealUnit();
    boolean value1;
    usermealunit.setMealid(cursor.getInt(cursor.getColumnIndex(TABLE_USERMEALUNIT_ID)));
    usermealunit.setBreakfast(cursor.getInt(cursor.getColumnIndex(TABLE_USERMEALUNIT_BREAKFAST)));
    return usermealunit;
}

早餐类型是布尔值,但cursor.getInt(cursor.getColumnIndex(TABLE_USERMEALUNIT_BREAKFAST)返回int,这是问题所在。我搜索这个问题,但无法找到任何有用的东西。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

SQLite数据库中没有布尔类型。相反,您必须将0保存为false,将1保存为true。因此,阅读你的价值

final boolean breakfast = cursor.getInt(cursor.getColumnIndex(TABLE_USERMEALUNIT_BREAKFAST) != 0;

使用ContentValues时,系统会在保存时自动将Boolean转换为int

contentValues.put(TABLE_USERMEALUNIT_BREAKFAST, booleanValue);
相关问题