无法从Cursor Database读取第0行第4列

时间:2015-03-17 17:45:32

标签: java android exception cursor

我遇到此异常的问题:

  

无法从包含1行,4列的CursorWindow读取第0行第4列。

public ArrayList<Nota> listNote(){
    ArrayList<Nota> list = new ArrayList<Nota>();
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.query("vasca", null, null, null, null, null, null);
    while(cursor.moveToNext()){
        Nota nota = new Nota(cursor.getInt(0), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getInt(4));
        list.add(nota);
    }
    cursor.close();
    db.close();
    return list;
}

Class Nota有三个String和一个int。

2 个答案:

答案 0 :(得分:1)

我更喜欢使用硬编码索引的方法是使用Cursor.getColumnIndex(String name)函数。尝试将其更改为:

Nota nota = new Nota(cursor.getInt(cursor.getColumnIndex("integerColumn")),
   cursor.getString(cursor.getColumnIndex("firstStringColumn")),
   cursor.getString(cursor.getColumnIndex("secondStringColumn")),
   cursor.getString(cursor.getColumnIndex("thirdStringColumn")));

这样您就不太可能出现此错误,或担心打字错误;特别是如果您的列名称保存为变量。

答案 1 :(得分:0)

您有四列是否正在尝试从五列获取值。你说一个int三个字符串,但你从两个int获取数据替换以下行:

Nota nota = new Nota(cursor.getInt(0), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getInt(4));

       With this

Nota nota = new Nota(cursor.getInt(0), cursor.getString(1), cursor.getString(2), cursor.getString(3));

希望这对你有所帮助。