我是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,这是问题所在。我搜索这个问题,但无法找到任何有用的东西。任何人都可以帮助我吗?
答案 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);