我遇到此异常的问题:
无法从包含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。
答案 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));
希望这对你有所帮助。