0

メソッドは次のとおりです。

 public ArrayList<Integer> getDays() {
    Cursor c = database.rawQuery("SELECT * FROM debt;", null);

    nameList = new ArrayList<String>();
    dayList = new ArrayList<Integer>();

    String indName[] = new String[c.getCount()];
    String indDay[] = new String[c.getCount()];

    int d = 0, j = 0, u = 0;

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
        indName[j++] = c.getString(c.getColumnIndex("debt_name")); 
        indDay[d++] = c.getString(c.getColumnIndex("pay_day")); // line 384
    }   

    for (String name : indName) {
        if ((indDay[u] != "") || (indDay[u] != null)) {
            dayList.add(Integer.valueOf(indDay[u++]));

        }
    }
    c.close();

    return dayList;
}

行 384 で、「行 0、列 -1 を読み取れませんでした。カーソルが初期化されていることを確認してください。」というエラーが表示されます。

384行目は上にマークされています。ここで私が見逃しているものを見つけることができますか?

4

2 に答える 2

2

削除する ; クエリの最後から:SELECT * FROM debt

この行を呼び出します:

//optional
//"this"  is your DBHELPER class
SQLiteDatabase database = this.getWritableDatabase();

これで(ブロック用にマークされた)置き換えます

if(c.moveToFirst()){
    while(c.moveToNext()) {
            indName[j++] = c.getString(c.getColumnIndex("debt_name"));
            indDay[d++] = c.getString(c.getColumnIndex("pay_day"));

        }   ( Line 386!!! )

}
于 2012-06-08T18:40:09.433 に答える