游标不包含存在的列
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。向哈希图中添加一行并更新它允许查询通过。
我在 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。向哈希图中添加一行并更新它允许查询通过。