android - 在 Android 中,_id 是否必须存在于任何创建的表中?

标签 android string sqlite primary-key

我正在尝试创建一个只有外键而不是主键的表。我收到此错误:

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/

相关文章:

c++ - 字符串重载运算符 ">>"

android - 如何查看bluestacks中存在的SQLite数据库?

javascript - 使用 sql.js 从磁盘读取 SQLite 数据库

android - 复制到 Realm 或更新和删除

javascript - 如何在 Android 中编写 JavaScript 应用程序

java - Android以编程方式关闭电源关闭菜单

android - 无法更新android中sqlite表中的一行

java - Android:类 fragment - 膨胀类映射 fragment 时出错

C++ 错误 : String subscript out of range

python - 如何一次从 Pandas 的所有列中删除逗号