我正在阅读这个帖子:What is the use of BaseColumns in Android,我得到了如何使用BaseColumns,你必须在SELECT语句中获取_id。
我还不清楚是什么时候“内部”创建了_id字段?在execSQL(...)中,Android是否添加了_id字段?或者,我们还必须在CREATE TABLE语句中定义它吗?
答案 0 :(得分: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_*
和COLUMN_*
是DB-helper的常量字段,例如:
public static final String TABLE_MESSAGES = "messages";
public static final String COLUMN_TIMESTAMP = "timestamp";
public static final String COLUMN_MESSAGE = "message";