android - 我无法从游标对象获取数据

标签 android android-sqlite sqliteopenhelper

我的 SQLite 数据库中有以下表结构。 enter image description here

在我的 SqliteOpenHelper 类中,我编写了以下方法。

public Form getAllForms(){
   SQLiteDatabase db = this.getReadableDatabase();
   Cursor cursor = db.rawQuery("select * from "+FORM_TABLE, null);
   int count = cursor.getCount();
   String formID = cursor.getString(0);
   Form form = new Form();
   form.setId(formID);
   cursor.close();
   db.close();
   return form;
}

我确定其中有一些数据,因为我已经在 Debug模式下观察了 count 并且我看到了数据库中实际存在的行数。但是 CursorIndexOutOfBoundException 出现在 cursor.getString(0)。加上 cursor.getInt(0) 和 cursor.getString(1) 也不起作用。可能是什么问题?

最佳答案

您需要将光标移动到有效行。

有效行的索引从 0 到 count-1。首先,游标将指向行索引 -1,即第一行之前的行。

遍历所有行的规范方式是

if (cursor.moveToFirst()) {
    do {
         // now access cursor columns
    } while (cursor.moveToNext());
}

关于android - 我无法从游标对象获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24177570/

相关文章:

java - 从 SQLite 列添加数据

android - 将数据库从/ Assets 复制到应用程序私有(private)存储的正确方法

android - 在 IOS 上集成 Mobile Express Checkout

android - Gradle 升级 - 创建 apk 时缺少 base.apk 代码

android - 圆形按钮

android - 依赖项的 AAR 元数据中指定的 minCompileSdk (31) 大于此模块的 compileSdkVersion (android-30)

sqlite - Xamarin Sqlite Insert 不返回最后一个主键 ID

android - 如何删除 SQLiteDatabase 中的一行 - Android Content Provider

android - 如何从自定义数据库助手创建游标

java - 不接受错误的SDK许可证