Para agregar una nueva columna a la tabla, debe usar ALTER. En Android, puede agregar la nueva columna dentro de onUpgrade().
Quizás se pregunte, ¿cómo onUpgrade()agregará la nueva columna?
Cuando implementas una subclase de SQLiteOpenHelper, necesitas llamar al constructor de superclase: super(context, DB_NAME, null, 1);en tu constructor de clases. Allí he pasado 1por la versión.
Cuando cambié la versión 1anterior ( 2o superior), onUpgrade()se invocará. Y realizar las modificaciones SQL que pretendo hacer. Mi constructor de clases después de cambiar la versión:
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, 2);//version changed from 1 to 2
}
Las modificaciones de SQL verifican como esta, el constructor de superclase compara la versión del archivo db SQLite almacenado con la versión a la que pasé super(). Si estos números de versión (anteriores y actuales) son diferentes, onUpgrade()se invoca.
El código debería verse así:
@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");
}
}