我收到这个错误
IllegalArgumentException:列“_id”不存在
当使用SimpleCursorAdapter
从我的数据库中检索,该表确实有这个_id
柱子。注意到这是一个常见问题,我尝试根据网上的一些解决方案来解决它,但它们都不起作用。这是我的游标查询:
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, R.layout.quoterow, myCursor, new String[]{"_id", "quote"}, new int[]{R.id.quote});
虽然我应该提到原件不包括_id
专栏,我最近添加了这个来尝试解决问题。有人有任何可能有助于解决问题的想法吗?
您的数据库不必具有名为“_id”的列,但 SimpleCursorAdaptor 确实需要返回一列。您可以使用别名来执行此操作。
一个例子是我有一个包含列的表......
uid,name,number
要查询 SimpleCursorAdapter,我使用数据库执行此操作rawQuery
...
SELECT uid as _id,name,number FROM MY_TABLE
这工作正常,并向 SimpleCursorAdapter 提供必要的“_id”列。
EDIT:据我了解, _id 字段用作唯一键,以确保适配器和适配器视图等可以正确处理光标处理的数据。
查看文档中的数据模型内容提供商 http://developer.android.com/guide/topics/providers/content-providers.html.
在任何类型的“数据库”中使用唯一键几乎是普遍的做法,据我所知,使用列名“_id”(或“_ID”)只是一种标准化和简化事物的方法数据库、内容提供者、游标、适配器等
简而言之,为了使这些不同的组件正常工作,它们需要一个具有唯一值的数据列,但它们还必须“知道”该列的名称是什么。可以这么说,他们不会“知道”我的列名“uid”是他们需要的列名,而不是我的“名称”和“数字”列。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)