错误:无法从CursorWindow中读取第0行、第-1列的数据。在访问数据之前,请确保正确初始化了Cursor。

3

我创建了一个非常简单的数据库安卓应用程序。它接受输入并显示结果。添加按钮用于添加输入,删除按钮用于从SQLite数据库中删除输入。我的Android SQLite中的游标已正确指向,但仍然出现错误:Caused by: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.以下是游标部分:Cursor c = db.rawQuery(query, null)。

    c.moveToFirst();

    //Traversing through DB
    while (!c.isAfterLast()){
        if(c.getString(c.getColumnIndex("studentname")) !=null)
        {
            dbString += c.getString(c.getColumnIndex("studentname"));
            dbString +="\n"; }

        c.moveToNext(); }
        db.close();

        return dbString;

我已经尝试改变光标位置,但仍然出现相同的错误。我在其他网站上进行了研究,发现概念相同,但仍存在问题。

2个回答

7

显然,如果 c.getColumnIndex("studentname")返回-1,则您的结果集中没有 studentname 列。


1
你是100%正确的。我的错,应该是StudentName,而不是studentname。非常感谢CommonsWare,你为我解决了我苦苦挣扎了大约两个小时的错误。下次我在命名规则方面会非常小心。现在应用程序完美地运行。再次感谢并保重 :) - Rana Talha Tariq
这是正确的,我遇到了这个问题,因为我想在现有表中添加一个新列。你有什么办法可以添加吗? - Noor Hossain

2
如CommonsWare所说,这似乎表明没有这样的列名,这是完全正确的。我的列名是StudentName,而不是studentname,因此在正确的列名方面存在错误,导致结果为-1(根本没有列可供使用)。感谢CommonsWare指出我的愚蠢错误 :)

对于那些想要从Android开始了解SQLite的人,可以查看这个课程,我也是其中的一部分,并正在学习:https://www.udemy.com/androidcourse/,可在Udemy上找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接