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 1für die Version bestanden.
Wenn ich die Version 1auf oben ( 2oder 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");
}
}