错误:无法从 CursorWindow 读取第 0 行 col -1。确保在访问数据之前正确初始化光标
Posted
技术标签:
【中文标题】错误:无法从 CursorWindow 读取第 0 行 col -1。确保在访问数据之前正确初始化光标【英文标题】:ERROR: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is correctly initialized before accessing data 【发布时间】:2016-12-13 15:21:31 【问题描述】:我创建了一个非常简单的数据库 android 应用程序。它需要输入并显示结果。添加按钮用于添加输入和删除按钮,用于删除存储在 SQLite 数据库中的输入。我在 Android SQLite 中的 cursor 指向正确,但我仍然面临错误:Caused by: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow。确保游标在从中访问数据之前已正确初始化。 以下是游标部分: 光标 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;
我已尝试更改光标位置,但仍然出现相同的错误。我在其他网站上进行了研究,概念也是如此,但仍然存在问题。
【问题讨论】:
【参考方案1】:显然,如果c.getColumnIndex("studentname")
返回-1
,则结果集中没有studentname
列。
【讨论】:
你是 100% 正确的。我的错,它是学生名,而不是学生名。非常感谢 CommonsWare,您解决了我为之奋斗了大约 2 个小时的错误。下次我会非常小心我的命名约定。应用程序现在工作得很好。再次感谢并保重:)【参考方案2】:正如 CommonsWare 上面提到的,这显然看起来没有这样的名称列,并且绝对正确。我的列名是 StudentName,而不是 studentname,因此在正确的列名方面存在错误,导致 -1(根本没有可处理的列)。感谢 CommonsWare 指出我的愚蠢错误 :)
对于那些想开始使用 android 了解 SQLite 的人,可以查看这门课程,我也是其中的一员并从中学习:https://www.udemy.com/androidcourse/ 可在Udemy 获得
【讨论】:
以上是关于错误:无法从 CursorWindow 读取第 0 行 col -1。确保在访问数据之前正确初始化光标的主要内容,如果未能解决你的问题,请参考以下文章
嗨,我不知道如何修复此游标错误,“java.lang.IllegalStateException:无法从 CursorWindow 读取第 0 行,第 1 列。”
Android:无法从CursorWindow读取第0行,第3列。在从中访问数据之前,请确保正确初始化Cursor
android java.lang.IllegalStateException:无法从 CursorWindow 读取第 0 行,第 0 列
SQLiteBlobTooBigException:行太大,无法放入 CursorWindow requiredPos=0,totalRows=1