Sto creando un semplice database in Android. Voglio aggiungere una nuova tabella dopo che il mio codice è stato eseguito una volta. Ora, ogni volta che provo a cambiare il mio metodo onCreate() nella classe EventDataSqlHelper, la mia app si arresta in modo anomalo.Aggiunta di una nuova tabella al database dopo che l'app è stata eseguita una volta
Ciò è probabilmente dovuto al fatto che onCreate()
associato a SQLiteOpenHelper
viene eseguito solo quando l'app viene eseguita per la prima volta e non è possibile apportare ulteriori modifiche al suo interno.
Ho anche provato a scrivere una funzione separata per l'aggiunta di una nuova tabella. Ha funzionato perfettamente alla prima esecuzione. Ma dal momento che alla 2 ° edizione sovrascriverà il suo database precedente, quindi provoca l'arresto anomalo dell'app.
C'è un modo per aggiungere nuove tabelle al database se il database è già stato creato?
package org.example.sqldemo;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;
import android.util.Log;
/** Helper to the database, manages versions and creation */
public class EventDataSQLHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "events.db";
private static final int DATABASE_VERSION = 1;
// Table name
public static final String TABLE = "events";
// Columns
public static final String TIME = "time";
public static final String TITLE = "title";
public EventDataSQLHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table " + TABLE + "(" + BaseColumns._ID
+ " integer primary key autoincrement, " + TIME + " integer, "
+ TITLE + " text not null);";
Log.d("EventsData", "onCreate: " + sql);
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}