如何在android中的一个活动中进行两个数据库查询调用

时间:2011-06-21 15:24:12

标签: android sqlite cursor

我想创建一个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列:i​​d和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);");
    }

1 个答案:

答案 0 :(得分:1)

您的错误位于helper.getSumAllAmounts(Cursor)。您正在将无效的列索引传递给cursor.get *函数。我需要查看您的查询投影字符串以及您对cursor.get *的调用,以告诉您确切的错误。