Щоб додати новий стовпець до таблиці, потрібно скористатися ALTER
. В android ви можете додати новий стовпець всередині onUpgrade()
.
Ви можете задатися питанням, як onUpgrade()
додати новий стовпець?
При реалізації підкласу SQLiteOpenHelper
, вам потрібно викликати конструктор суперкласу: super(context, DB_NAME, null, 1);
у конструкторі вашого класу. Там я перейшов 1
на версію.
Коли я змінив версію 1
на вище ( 2
або вище), onUpgrade()
буде викликано. І виконати модифікації SQL, які я маю намір зробити. Мій конструктор класів після зміни версії:
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, 2);//version changed from 1 to 2
}
Модифікації SQL перевіряють таким чином, конструктор суперкласу порівнює версію збереженого файлу баз даних SQLite з версією, якій я передав super()
. Якщо ці (попередні та теперішні) номери версій різні, onUpgrade()
отримується виклик.
Код повинен виглядати так:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// add new columns to migrate to version 2
if (oldVersion < 2) {
db.execSQL("ALTER TABLE " + TABLE_NAME + "ADD COLUMN school VARCHAR(250)");
}
// add new columns to migrate to version 3
if (oldVersion < 3) {
db.execSQL("ALTER TABLE " + TABLE_NAME + "ADD COLUMN age INTEGER");
}
}