Android: 无法从 CursorWindow 读取第 0 行第 3 列。在从游标访问数据之前确保正确初始化了游标
Android: Couldn't read row 0, col 3 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it
我正在开发一个新应用程序,但遇到错误:无法从 CursorWindow 读取第 0 行第 3 列。在从游标访问数据之前,确保游标已正确初始化。
我正在使用外部数据库(资产文件夹)并尝试从 Auditoria table 获取名称列,从 Categoria table 获取名称列,从 Preguntas table 获取 pregunta 列.所以,我做了一个非常好的连接。我在 DB Browser 上测试了 SQLite。
有人可以帮助我吗?
public AuditoriaModel getCriterioById(int id) {
AuditoriaModel auditoriaModel = null;
openDatabase();
Cursor cursor = database.rawQuery("SELECT Auditoria.Name AS Auditorias, Categorias.Name AS Categoria, Preguntas.Pregunta AS Pregunta FROM Auditoria INNER JOIN Categorias ON Categorias.IdAuditoria = Auditoria.Id INNER JOIN Preguntas ON Preguntas.IdCategoria = Categorias.Id WHERE Preguntas.Id = ?", new String[]{String.valueOf(id)});
cursor.moveToFirst();
auditoriaModel = new AuditoriaModel (cursor.getInt(0), cursor.getString(1), cursor.getString(2), cursor.getInt(3), cursor.getString(4), cursor.getString(5));
//Obtendremos un solo resultado
cursor.close();
closeDatabase();
return auditoriaModel;
}
您正在选择三列,但正在尝试读取六列。
要么删除额外的 get...()
读数,要么将缺失的列添加到您的 SELECT
。
(另一个问题:检查 moveToFirst()
的结果,以防查询不匹配。)
我正在开发一个新应用程序,但遇到错误:无法从 CursorWindow 读取第 0 行第 3 列。在从游标访问数据之前,确保游标已正确初始化。
我正在使用外部数据库(资产文件夹)并尝试从 Auditoria table 获取名称列,从 Categoria table 获取名称列,从 Preguntas table 获取 pregunta 列.所以,我做了一个非常好的连接。我在 DB Browser 上测试了 SQLite。
有人可以帮助我吗?
public AuditoriaModel getCriterioById(int id) {
AuditoriaModel auditoriaModel = null;
openDatabase();
Cursor cursor = database.rawQuery("SELECT Auditoria.Name AS Auditorias, Categorias.Name AS Categoria, Preguntas.Pregunta AS Pregunta FROM Auditoria INNER JOIN Categorias ON Categorias.IdAuditoria = Auditoria.Id INNER JOIN Preguntas ON Preguntas.IdCategoria = Categorias.Id WHERE Preguntas.Id = ?", new String[]{String.valueOf(id)});
cursor.moveToFirst();
auditoriaModel = new AuditoriaModel (cursor.getInt(0), cursor.getString(1), cursor.getString(2), cursor.getInt(3), cursor.getString(4), cursor.getString(5));
//Obtendremos un solo resultado
cursor.close();
closeDatabase();
return auditoriaModel;
}
您正在选择三列,但正在尝试读取六列。
要么删除额外的 get...()
读数,要么将缺失的列添加到您的 SELECT
。
(另一个问题:检查 moveToFirst()
的结果,以防查询不匹配。)