Intereting Posts

Android – BaseColumns и _id

Я читал эту тему: что такое использование BaseColumns в Android , и я получаю, как использовать BaseColumns, что вам нужно получить _id в ваших операторах SELECT.

Что мне до сих пор неясно, когда создается поле «внутри» _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_* и COLUMN_* являются постоянными полями DB-хелпера, например:

 public static final String TABLE_MESSAGES = "messages"; public static final String COLUMN_TIMESTAMP = "timestamp"; public static final String COLUMN_MESSAGE = "message";