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 1wersję.
Kiedy zmieniłem wersję 1na powyższą ( 2lub 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");
}
}