我正在阅读这个帖子:Android 中 BaseColumns 的用途是什么,我知道如何使用 BaseColumns,你必须在 SELECT 语句中获取 _id。
我仍然不清楚的是什么时候“内部”创建了 _id 字段?是在 execSQL(...) 期间 Android 添加了 _id 字段吗?或者,我们还需要在 CREATE TABLE 语句中定义它吗?
我正在阅读这个帖子:Android 中 BaseColumns 的用途是什么,我知道如何使用 BaseColumns,你必须在 SELECT 语句中获取 _id。
我仍然不清楚的是什么时候“内部”创建了 _id 字段?是在 execSQL(...) 期间 Android 添加了 _id 字段吗?或者,我们还需要在 CREATE TABLE 语句中定义它吗?
您必须“手动”创建它。Android 不会为您这样做。
例如,在创建表期间,您发出:
CREATE TABLE messages (_id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp INTEGER, message TEXT);
看?该_id
列被显式命名和添加。
或者,按照 DB-helper 类的约定,你会想出类似的东西:
db.execSQL("CREATE TABLE " + TABLE_MESSAGES + " ("
+ BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ COLUMN_TIMESTAMP + " INTEGER,"
+ COLUMN_MESSAGE + " TEXT"
+ ");");
其中TABLE_*
andCOLUMN_*
是 DB-helper 的常量字段,例如:
public static final String TABLE_MESSAGES = "messages";
public static final String COLUMN_TIMESTAMP = "timestamp";
public static final String COLUMN_MESSAGE = "message";