Aby dodać nową kolumnę do tabeli, musisz użyć ALTER
. W systemie Android możesz dodać nową kolumnę w pliku onUpgrade()
.
Możesz się zastanawiać, jak onUpgrade()
dodasz nową kolumnę?
Podczas implementowania podklasy programu SQLiteOpenHelper
, musisz wywołać konstruktor nadklasy: super(context, DB_NAME, null, 1);
w konstruktorze klasy. Tam przekazałem 1
wersję.
Kiedy zmieniłem wersję 1
na powyższą ( 2
lub nowszą ), onUpgrade()
zostanie wywołany. I wykonaj modyfikacje SQL, które zamierzam zrobić. Konstruktor mojej klasy po zmianie wersji:
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, 2);//version changed from 1 to 2
}
Sprawdza modyfikacje SQL w ten sposób, konstruktor nadklasy porównuje wersję przechowywanego pliku bazy SQLite z wersją, do której przekazałem super()
. Jeśli te (poprzednie i obecne) numery wersji są różne, onUpgrade()
zostanie wywołany.
Kod powinien wyglądać następująco:
@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");
}
}