Android 还有一个“列id不存在”问题

Android 还有一个“列id不存在”问题,android,database,cursor,adaptor,Android,Database,Cursor,Adaptor,我想我已经检查了以前所有关于这个问题的帖子,但是没有一篇对我有帮助 基本资料-尝试使用绑定到数据库的游标适配器,但我得到: java.lang.IllegalArgumentException: column '_id' does not exist 我的架构定义了该列,尽管我有两个表,它们都具有相同的名称-这是一个问题吗?如下所示: public static abstract class dbMain implements BaseColumns { public static f

我想我已经检查了以前所有关于这个问题的帖子,但是没有一篇对我有帮助

基本资料-尝试使用绑定到数据库的游标适配器,但我得到:

java.lang.IllegalArgumentException: column '_id' does not exist
我的架构定义了该列,尽管我有两个表,它们都具有相同的名称-这是一个问题吗?如下所示:

public static abstract class dbMain implements BaseColumns {
    public static final String TABLE_NAME = "mpgMain";
    public static final String ENTRY_ID = "_id";
    public static final String VEHICLE_NAME = "v_name";

}

public static abstract class dbHistory implements BaseColumns {
    public static final String TABLE_NAME = "mpgHistory";
    public static final String ENTRY_ID = "_id";
    public static final String TRIP_DATE = "date";

}
在其他帖子中,我将_id放在光标投影中:

String[] projection = {dbMain.ENTRY_ID, dbMain.VEHICLE_NAME};

Cursor mpgCur = mpgDB.query(dbMain.TABLE_NAME, projection, null, null, null, null, null);
…但是我的堆栈跟踪在查询行上给出了相同的错误。如果我从投影中删除条目_ID,则会出现相同的错误,但会在稍后的一行实例化适配器:

String[] fromColumns = {dbMain.VEHICLE_NAME};
int[] toViews = {R.id.displayVehicle};

SimpleCursorAdapter vehAdapter = new SimpleCursorAdapter(this, 
    R.layout.activity_first_screen, mpgCur, fromColumns, toViews, 0);  <--- HERE

如果我没有弄错的话,通过实现BaseColumns,您不必在模式中指定_id。只需使用常量_idso,dbMain._ID和dbHistory._ID

true,但与问题无关。实现BaseColumns只提供常量。上述常数的使用取决于您。非常正确。你在主要帖子上的评论是有道理的。我甚至都没想到,是的。您尝试在查询行中记录.d所有光标列名。这意味着该表不包含列id。您可能在创建表之后添加了它,而没有同时更新表。卸载并重新安装应用程序应该可以解决这个问题。如果我只在emulator上工作并且每次都重新编译,这算不算?njzk2-非常感谢,你是对的!我没有意识到emulator是如此的文字化,实际上已经“安装”了应用程序——我想每次我在Eclipse中点击“Run”时,我实际上是在重新安装——显然不是。已卸载,一切正常-再次感谢。
private static final String SQL_CREATE_MAIN_TABLE =
"CREATE TABLE " + dbMain.TABLE_NAME + " ( " +
    dbMain.ENTRY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +