游标不包含存在的列

Cursor does not contain column that exists

我在 android 我正在修改的应用程序 (Open Data Kit) 中有一个数据库,它跟踪一组 .xml 文档的状态和其他相关信息,这些文档表示为表格。

为了方便 ListView 向用户显示有关这些表单的信息,我使用游标来保存从查询到数据库的信息,如下所示 (是的,我知道 managedquery 已被弃用):

    String selection = InstanceColumns.RANDOM_ID + " = ? AND " 
    + InstanceColumns.STATUS + " = ? AND " + InstanceColumns.JR_FORM_ID + " = ?";

     String[] selectionArgs = {"2433", InstanceProviderAPI.STATUS_COMPLETE, "sample"};
     String sortOrder = InstanceColumns.STATUS + " DESC, " 
     + InstanceColumns.DISPLAY_NAME + " ASC";

     Cursor c = managedQuery(InstanceColumns.CONTENT_URI, null, selection, selectionArgs,
                    sortOrder);

在我当前的设置中,这个 returns 1 行 10 列的游标。但是,我应该得到 11 列 - 我缺少对应于 InstanceColumns.RANDOM_ID

的列

这一行是 table 的新行 - 在我开始编写代码之前,前 10 行已经存在。

我知道我的数据库中存在此列。我在我的代码的其他地方写了它,我还手动检查了 .db 文件,它确实包含我插入的列和数据。

如有必要,我可以提供更多代码(我怀疑会如此),但此应用程序相当大且是开源的。这可能是由一些我不知道的内部设置引起的。

这是我遇到的崩溃:

E/CursorWindow: Failed to read row 0, column -1 from a CursorWindow which has 1 rows, 10 columns.

通常每当我尝试访问该列时,例如:

int randomID = c.getInt(c.getColumnIndex(InstanceColumns.RANDOM_ID));

这是全新安装,以确保新的数据库文件出现在模拟器和我的设备上。

如何使我的光标包含 table 的所有行?

回到这里只是为了结束,我在代码的其他地方定义了一个投影哈希图,我在大量挖掘后发现它限制了查询 table。向哈希图中添加一行并更新它允许查询通过。