Android - BaseColumns和_id

Shr*_*ers 4 database sqlite android

我正在阅读这个帖子:在Android中使用BaseColumns有什么用,我得到了如何使用BaseColumns,你必须在SELECT语句中获取_id.

我还不清楚的是,_id字段何时"内部"创建?在execSQL(...)中,Android是否添加了_id字段?或者,我们还必须在CREATE TABLE语句中定义它吗?

and*_*ndr 8

您必须"手动"创建它.Android不会为你做那件事.

例如,在表创建期间,您发出:

CREATE TABLE messages (_id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp INTEGER, message TEXT);
Run Code Online (Sandbox Code Playgroud)

看到?该_id列已明确命名并添加.

或者,按照DB-helper类的惯例,你会得到类似的东西:

db.execSQL("CREATE TABLE " + TABLE_MESSAGES + " ("
        + BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
        + COLUMN_TIMESTAMP + " INTEGER,"
        + COLUMN_MESSAGE + " TEXT"
        + ");");
Run Code Online (Sandbox Code Playgroud)

其中TABLE_*COLUMN_*是DB-helper的常量字段,例如:

public static final String TABLE_MESSAGES = "messages";
public static final String COLUMN_TIMESTAMP = "timestamp";
public static final String COLUMN_MESSAGE = "message";
Run Code Online (Sandbox Code Playgroud)