Android:无法从CursorWindow读取第0行,第3列。在从中访问数据之前,请确保正确初始化Cursor

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android:无法从CursorWindow读取第0行,第3列。在从中访问数据之前,请确保正确初始化Cursor相关的知识,希望对你有一定的参考价值。

我正在开发一个新的应用程序,我收到一个错误:无法从CursorWindow读取第0行第3行。在从中访问数据之前,请确保正确初始化Cursor。

我正在使用外部数据库(assets文件夹)并尝试从Auditoria表中获取名称列,从Categoria表中获取名称列,从Preguntas表中获取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()的结果。)

以上是关于Android:无法从CursorWindow读取第0行,第3列。在从中访问数据之前,请确保正确初始化Cursor的主要内容,如果未能解决你的问题,请参考以下文章

错误:无法从 CursorWindow 读取第 0 行 col -1。确保在访问数据之前正确初始化光标

无法分配 CursorWindow

无法从CursorWindow中读取第0行,第-1列,错误。

嗨,我不知道如何修复此游标错误,“java.lang.IllegalStateException:无法从 CursorWindow 读取第 0 行,第 1 列。”

SQLiteBlobTooBigException:行太大,无法放入 CursorWindow requiredPos=0,totalRows=1

SQLiteBlobTooBigException:写入数据库时​​行太大而无法放入 CursorWindow