Чтобы добавить новый столбец в таблицу, вам нужно использовать 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");
}
}