java - 表和记录已存在的 CursorIndexOutOfBoundsException

标签 java android sqlite sqliteopenhelper

我正在使用以下查询查询数据库:

    final Cursor subject_cursor = db.rawQuery("SELECT * FROM " + DB.Table.SUBJECT + " WHERE uniqueSUB = '" + cs_cursor.getString(1) + "'", null);

当我记录光标计数时,它给我 1 作为计数,但是当我尝试使用 subject_cursor.getString(0) 访问数据时,它给我一个错误:

    05-30 03:37:10.921: W/System.err(5408): android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1

我已手动检查数据库中的记录,并且所有必需的数据都存在。 (另外,如果我只是执行以下查询:

    "SELECT * FROM " + DB.Table.SUBJECT"

对于同一个表并给出游标的计数,它给出了正确的现有记录数)。

请帮忙...

最佳答案

您绝对应该阅读整篇文章 Cursor Index Out of Bounds Exception 。它处理完全相同的问题,您可以在那里找到问题的答案。从帖子中获取并添加到 @Alexey 指出的内容,Cursorslazy loaded您需要调用moveToFirst()moveToPosition()等方法将它们加载到内存中。 moveToFirst 将光标移动到第一行,以便您可以访问它。类似地,moveToPosition() 将光标移动到绝对位置。如果不使用这些函数,它将抛出您收到的错误。希望这可以帮助。

关于java - 表和记录已存在的 CursorIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16827596/

相关文章:

java - 有没有办法判断类路径资源是文件还是目录?

java动画android持续时间

java - 如何使用 wamp 服务器发送 Spinner 在数据库中选择的值

机器人/数据库/SqLite/ORM

c - 准备好的语句中的 SQLite 绑定(bind)函数

java - 将文件从 URL 流式传输到文件而不将其存储在内存中

Java JDBC 延迟加载的结果集

Java - 使用存储在数组中的文本更改 JLabel

android - 无法在 AlertDialog 中显示 Spinner DropDown 列表 - Android

android - 如何使用我自己的数据库 - android