4

我正在阅读这个帖子:Android 中 BaseColumns 的用途是什么,我知道如何使用 BaseColumns,你必须在 SELECT 语句中获取 _id。

我仍然不清楚的是什么时候“内部”创建了 _id 字段?是在 execSQL(...) 期间 Android 添加了 _id 字段吗?或者,我们还需要在 CREATE TABLE 语句中定义它吗?

4

1 回答 1

8

您必须“手动”创建它。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";
于 2013-02-01T20:00:48.340 回答