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

使用SimpleCursorAdapter显示SQLite的数据到ListView时,显示java.lang.IllegalArgumentException: column ‘_id‘ does not exist这个错误,意思是说:字段"_id"不存在。

下面我们来看看SimpleCursorAdapter的继承关系,你就会知道这是什么原因造成的:

我们可以看到SimpleCursorAdapter继承ResourseCursorAdapter,而ResourseCursorAdapter又继承CursorAdapter,那现在我们来看看CursorAdapter的描述:

Adapter that exposes data from a
Cursor to a
ListView widget. The Cursor must include a column named "_id" or this class will not work.

意思是说:适配器将数据从光标显示到ListView视图控件上。这个光标必须包含一个列命名为"_id"或者这个类将不会工作。

这个时候事情就很明白了,我们在查询SQLite数据库时,查询字段中没有"_id",所以光标cursor中就不存在"_id"这个字段。SimpleCursorAdapter(Context context, int layout, Cursor c, String[]
from, int[] to)中的from也要有一个"_id"对应的列才能成功。

所以解决办法就是:查询字段中要有“_id”,SimpleCursorAdapter的继承者的构造方法中的from也要有和查询字段相对应的“_id”,就可以用解决问题啦。

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

时间: 2024-10-01 20:37:22

java.lang.IllegalArgumentException: column '_id' does not exist的相关文章

关于SimpleCursorAdapter在sqlite数据库中取数据报错 : java.lang.IllegalArgumentException: column '_id' does not exist

_id列不存在 需要创建一个 id列 因为SQLlite数据库 的onCreate方法是在数据库不存在的时候才调用所以我们需要清除一下这个app 的数据 将数据清空 关于SimpleCursorAdapter在sqlite数据库中取数据报错 : java.lang.IllegalArgumentException: column '_id' does not exist

【已解决】java.lang.IllegalArgumentException: column '_id' does not exist

今天用到SimpleCursorAdapter来适配ListView的数据,依旧记得SimpleCursorAdapter必须匹配一个字段名为_id的主键列,一开始我用SQLiteDatabase的rawQuery方法拼sql查询,因为是用SELECT * FROM table_name,所以一切正常. 后来我用query方法就挂了,抛出了java.lang.IllegalArgumentException: column '_id' does not exist异常,然后我发现原来是参数col

Android Caused by: java.lang.IllegalArgumentException: column '_id' does not exist

出错原因:在查询整个sqlite数据库时,没有查询到 "_id" 这一列. 原来的代码是:mSQLiteDatabase.query(table_name, new String[] {_title}, null, null, null, null, null); 修改后的代码为:mSQLiteDatabase.query(table_name, null, null, null, null, null, null); 这里的 new String[] {MyEvent._title}

Tomcat的错误 之 java.lang.IllegalArgumentException: Document base * does not exist

Tomcat的异常 之 java.lang.IllegalArgumentException: Document base 有些刚开始使用的Tomcat的朋友会出现的问题,明明已经将某个web应用从tomcat下的webapps下移除了,为什么还会抛这样的异常呢? java.lang.IllegalArgumentException: Document base *** does not exist or is not a readable directoryat org.apache.nami

tomcat启动报错:java.lang.IllegalArgumentException: Document base D:\apache-tomcat-6.0.45\webapps\activiti-explorer does not exist or is not a readable directory

java.lang.IllegalArgumentException: Document base D:\apache-tomcat-6.0.45\webapps\erp does not exist or is not a readable directory at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142) at org.apache.catalina.core.Standard

tomcat报错java.lang.IllegalArgumentException: Document base XXXXX does not exist or is not a readable directory

启动tomcat的时候报如下错误: java.lang.IllegalArgumentException: Document base F:\java\tools\tomcat\me-webapps\drp1.1 does not exist or is not a readable directory     at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142)    at org.a

java.lang.IllegalArgumentException: Document base E:\Eclipse\workspace\.metadata\.plugins\org.eclips

1.错误描述 四月 13, 2015 5:56:55 下午 org.apache.catalina.core.AprLifecycleListener init 信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Java\jdk1.7.0_67\bi

[zhuan]Android 异常处理:java.lang.IllegalArgumentException(...contains a path separator)

http://blog.csdn.net/alex_zhuang/article/details/7340901 对以下错误: Java.lang.RuntimeException: java.lang.IllegalArgumentException: File /data/data/com.alex.datasave/files/user.txt contains a path separator 原先代码: fis = this.context.openFileInput("/data/d

严重: Error starting static Resources java.lang.IllegalArgumentException:

严重: Error starting static Resources java.lang.IllegalArgumentException: Document base E:\myworkspace\evecomoa\WebRoot does not exist or is not a readable directory at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext... 解决办法: E:\my