我正在尝试创建一个只有外键而不是主键的表。我收到此错误:
java.lang.IllegalArgumentException: column '_id' does not exist
看了教程说主键必须是_id,没有解释。那很好。但是,如果我不想要主键怎么办!如果我只想要一个外键怎么办。我假设这是我的问题所在。下面的模式是我所拥有的。但第三个是我认为这是来自的地方。
database.execSQL("CREATE TABLE events (" +
"_id INTEGER PRIMARY KEY, event_name TEXT" +
")");
database.execSQL("CREATE TABLE reminders(_id INTEGER PRIMARY KEY, event_name TEXT" +
")");
database.execSQL("CREATE TABLE events_info (_id INTEGER, event_name TEXT, all_day INTEGER, " +
"start_date INTEGER, start_time INTEGER, end_date INTEGER, end_time INTEGER," +
" location TEXT, reminder_id INTEGER, notes TEXT, repeat TEXT," +
"FOREIGN KEY(_id) REFERENCES events(_id), FOREIGN KEY(reminder_id) REFERENCES reminders(_id))"
);
最佳答案
您使用的是 CursorAdapter
吗?因为如果是,CursorAdapter
类要求有一个名为 _id
的列,否则该类将无法工作。通常,出于这个原因,让您的数据库表包含一个名为 _id
的列通常被认为是好的做法,以防您决定将数据绑定(bind)到 CursorAdapter
或一个它的子类。
关于android - 在 Android 中,_id 是否必须存在于任何创建的表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10867724/