我想创建一个SQL查询并将其放在TextView中。我可以通过关于使用adapter / dbHelpers的教程/示例来为ListView做这件事。我得到CursorIndexOutOfBoundException
会让我相信我没有正确使用光标。
这是onCreate中的代码:
TextView summaryTV = (TextView) findViewById(R.id.summary);
sumAllAmounts = iouHelper.getSumAllAmounts();
startManagingCursor(sumAllAmounts);
System.out.println(String.valueOf(iouHelper.getSumAllAmounts(sumAllAmounts)));
summaryTV.setText(String.valueOf(iouHelper.getSumAllAmounts(sumAllAmounts)));
sumAllAmounts
是一个Cursor,由执行sql命令的数据库助手返回。我知道sql查询是正确的,因为我使用SQLite Database Browser
进行了测试。我可以使用ListView
将其用于ArrayAdapters
。
查询应返回2列:id和amount。 helper.getSumAllAmounts(Cursor)
将返回第二列Cursor.getInt(1)
,并将其转换为要在TextView上显示的String。 TextView.setText(String.valueOf(int))
请指导我搞砸了哪里。感谢。
编辑:
Code for DB helper function:
public Cursor getSumAllAmounts() {
return (getReadableDatabase().rawQuery("SELECT _id, SUM(amount) FROM ious", null));
}
public int getSumAllAmounts(Cursor c){
return (c.getInt(1));
}
DB的架构:
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE ious (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, type TEXT, amount INT, description TEXT, date String);");
}
答案 0 :(得分:1)
您的错误位于helper.getSumAllAmounts(Cursor)
。您正在将无效的列索引传递给cursor.get *函数。我需要查看您的查询投影字符串以及您对cursor.get *的调用,以告诉您确切的错误。