Um der Tabelle eine neue Spalte hinzuzufügen, müssen Sie sie verwenden ALTER
. In Android können Sie die neue Spalte innerhalb der hinzufügen onUpgrade()
.
Sie fragen sich vielleicht, wie onUpgrade()
die neue Spalte hinzugefügt wird.
Wenn Sie eine Unterklasse von implementieren SQLiteOpenHelper
, müssen Sie den Konstruktor der Oberklasse aufrufen: super(context, DB_NAME, null, 1);
in Ihrem Klassenkonstruktor. Dort habe ich 1
für die Version bestanden.
Wenn ich die Version 1
auf oben ( 2
oder höher) geändert habe , onUpgrade()
wird aufgerufen. Und führen Sie die SQL-Änderungen durch, die ich beabsichtige. Mein Klassenkonstruktor hat nach dem Ändern der Version:
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, 2);//version changed from 1 to 2
}
SQL-Änderungsprüfungen wie folgt: Der Superklassenkonstruktor vergleicht die Version der gespeicherten SQLite-Datenbankdatei mit der Version, an die ich übergeben habe super()
. Wenn diese (vorherigen und jetzt) Versionsnummern unterschiedlich sind, onUpgrade()
wird sie aufgerufen.
Der Code sollte folgendermaßen aussehen:
@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");
}
}