您的位置:首页 > 其它

关于使用CursorAdapter()时出现“column '_id' does not exist”错误的说明及解决方案

2011-02-21 17:21 886 查看
出现问题:

我们使用
SimpleCursorAdapter
()显示
SQLite
数据库表中的数据的时候,
Eclipse
会莫名其妙报错,报错如下:

显示:
java.lang.IllegalArgumentException: column '_id' does not exist

而假如我们的数据表列名中并未定义名为“
_id
”的列名,如:我的数据表中定义了三列,列名分别为:“
_id1

,

name1

,

bir
”,这样,表中就没有名为“
_id
”的数据库,(
ps
:如果你的数据表中刚好就把某一列定义成了
_id
,那么肯定是不会出现这种错误了)
[9]

查找原因:

仔细查看
Android
的开发文档中有关
SimpleCursorAdapter()
的说明发现,
SimpleCursorAdapter()
的父类是
CursorAdapter()

CursorAdapter()
有一个很隐蔽的规定

The Cursor must include a
column named "_id" or this class will not work.
也就是说,我们查询结果集游标
Cursor
返回的数据中,一定要有一列名为“
_id
”,否则这个类将不起作用,这也就是为什么
Eclipse
会报上面的错误。

解决方案:

这种情况无需修改数据库。为满足
CursorAdapter()
类的要求,我们可以在查询语句相关代码中作如下修改:(
ps

chi
数据表三列名为:
_id1,name1,bir


原代码:

public
Cursor getAll(){

return
db.rawQuery("SELECT * FROM chi", null);

}

修改后代码:

public
Cursor getAll(){

return
db.rawQuery("SELECT _id1 AS _id ,name1 , bir FROM chi", null);

//return
db.rawQuery("SELECT * FROM chi", null);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐