无法从游标数据库读取第 0 行第 4 列
Failed to read row 0, column 4 from, Cursor Databasa
我对这个异常有疑问:
Failed to read row 0, column 4 from a CursorWindow which has 1 rows, 4 columns.
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有3个String和1个int。
与硬编码索引相比,我更喜欢使用的一种方法是使用 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")));
这样您就不太可能出现此错误,或担心打字错误;特别是如果您的列名保存为变量。
您有四列,您是否正在尝试从五列中获取值。你说一个 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));
希望这对您有所帮助。
我对这个异常有疑问:
Failed to read row 0, column 4 from a CursorWindow which has 1 rows, 4 columns.
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有3个String和1个int。
与硬编码索引相比,我更喜欢使用的一种方法是使用 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")));
这样您就不太可能出现此错误,或担心打字错误;特别是如果您的列名保存为变量。
您有四列,您是否正在尝试从五列中获取值。你说一个 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));
希望这对您有所帮助。