我试图从我的sqlite数据库中获取一个整数,但是getInt()一直在崩溃。我已经能够使用getString()而没有问题。我无法弄清楚我做错了什么。
public int[] getDayActivities(String date){
SQLiteDatabase db = this.getReadableDatabase();
int[] chosen = new int[4];
Cursor res = db.rawQuery("select * from diary",null);
if(res != null)
{
res.moveToFirst();
chosen[0] = res.getInt(res.getColumnIndex(DIARY_COLUMN_N1));
}
return chosen;}
答案 0 :(得分:1)
除非您有绝对需要来检索所有列,否则您不应该这样做。您应该这样做的用例很少(例如DB转储程序)。
所以我会重写查询以获取您感兴趣的列,然后使用:
res.getInt(0);
而且,如果仍然有同样的问题,您也可以使用res.getType(0)
来确认 FIELD_TYPE_INTEGER
,因为你的论点似乎是整数列可能不正确。即使类型是整数,其中的NULL
值也会为您提供FIELD_TYPE_NULL
而不是FIELD_TYPE_INTEGER
。
答案 1 :(得分:0)
匹配代码的数据类型和db列。您的列似乎是varchar,并且您尝试将其作为int
答案 2 :(得分:-1)
施放退货声明......
(Integer)res.getInt(res.getColumnIndex(DIARY_COLUMN_N1));