在android中,如何在一个活动中调用两个数据库查询
我想进行一个sql查询并将其放入TextView中。通过以下关于使用适配器/dbHelpers的教程/示例,我能够为ListView实现这一点。我收到在android中,如何在一个活动中调用两个数据库查询,android,sqlite,cursor,Android,Sqlite,Cursor,我想进行一个sql查询并将其放入TextView中。通过以下关于使用适配器/dbHelpers的教程/示例,我能够为ListView实现这一点。我收到游标IndexOutofBoundException将使我相信我没有正确使用游标 这是onCreate中的代码: TextView summaryTV = (TextView) findViewById(R.id.summary); sumAllAmounts = iouHelper.getSumAllAmounts();
游标IndexOutofBoundException
将使我相信我没有正确使用游标
这是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
是执行sql命令的数据库帮助程序返回的游标。我知道sql查询是正确的,因为我使用SQLite数据库浏览器测试了它。我可以使用ArrayAdapters
在ListView
上运行它
查询应返回2列:id和amount。helper.getsumalamounts(Cursor)
将返回第二列Cursor.getInt(1)
,并将其转换为要在TextView上显示的字符串TextView.setText(String.valueOf(int))
请告诉我我把事情搞砸了。谢谢
编辑:
数据库的架构:
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);");
}
您的bug位于
helper.getsumalamounts(游标)
中。您正在将无效的列索引传递给游标.get*函数。我需要查看您的查询投影字符串和对游标的调用。get*可以准确地告诉您出了什么问题。这里的问题可能是您需要调用游标。moveToFirst()来定位游标?此外,您的查询也无法工作。您不能选择_id和sum(amount)。尝试只选择sum(amount),然后将c.getInt(1)
更新为c.getInt(0)
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);");
}