Tworzę prostą bazę danych w systemie Android. Chcę dodać nową tabelę po tym, jak mój kod został wykonany jeden raz. Teraz, gdy próbuję zmienić moją metodę onCreate() w klasie EventDataSqlHelper, moja aplikacja ulega awarii.Dodawanie nowej tabeli do bazy danych po wykonaniu aplikacji raz
Jest tak prawdopodobnie dlatego, że onCreate()
powiązane z SQLiteOpenHelper
jest wykonywane tylko wtedy, gdy aplikacja jest uruchomiona i nie możemy wprowadzać w niej dalszych modyfikacji.
Próbowałem również napisać osobną funkcję dodawania nowej tabeli. To działało idealnie przy pierwszym uruchomieniu. Ale ponieważ na drugim etapie będzie nadpisywać poprzednią bazę danych, dlatego powoduje awarię aplikacji.
Czy istnieje sposób dodania nowych tabel do bazy danych, jeśli baza danych została już utworzona?
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) {
}
}