Hallo,
ich frage mich gerade, wie ich die Versionsnummer meiner Datenbank erhöhe. Passiert diese automatisch mit onUpgrade? Kann ich mir irgendwie nicht vorstellen. Muss ich irgendwo angeben, dass er die Datenbank auf die neue Version ändert?
Hier mal ein gekürztes Beispiel:
SQL Helper in der 1. Version der APP:
Code
public class sql_helper extends SQLiteOpenHelper {
private static final String DATABASE_FILE_NAME="pzc";
private static final int SCHEMA_VERSION=1;
public sql_helper(Context context) {
super(context, DATABASE_FILE_NAME, null, SCHEMA_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE pzc_haupt (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, unter INTEGER);");
db.execSQL("CREATE TABLE pzc_unter (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, haupt INTEGER);");
db.execSQL("CREATE TABLE pzc_code (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, unter INTEGER, haupt INTEGER, prio1 INTEGER, prio2 INTEGER, prio2 INTEGER);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
Alles anzeigen
Mit der 3. Version der App kommt jetzt eine Spalte in der 1. Tabelle hinzu.
SQL Helper in der 3. Version der App
Code
public class sql_helper extends SQLiteOpenHelper {
private static final String DATABASE_FILE_NAME="pzc";
private static final int SCHEMA_VERSION=2;
public sql_helper(Context context) {
super(context, DATABASE_FILE_NAME, null, SCHEMA_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE pzc_haupt (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, unter INTEGER, test TEXT);");
db.execSQL("CREATE TABLE pzc_unter (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, haupt INTEGER);");
db.execSQL("CREATE TABLE pzc_code (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, unter INTEGER, haupt INTEGER, prio1 INTEGER, prio2 INTEGER, prio2 INTEGER);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch(oldVersion){
case 1:
db.execSQL("ALTER TABLE pzc_haupt ADD COLUMN test TEXT");
break;
}
Alles anzeigen
Und mit einer weiteren Version noch eine Spallte:
Code
public class sql_helper extends SQLiteOpenHelper {
private static final String DATABASE_FILE_NAME="pzc";
private static final int SCHEMA_VERSION=3;
public sql_helper(Context context) {
super(context, DATABASE_FILE_NAME, null, SCHEMA_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE pzc_haupt (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, unter INTEGER, test TEXT, test_2 TEXT);");
db.execSQL("CREATE TABLE pzc_unter (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, haupt INTEGER);");
db.execSQL("CREATE TABLE pzc_code (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, unter INTEGER, haupt INTEGER, prio1 INTEGER, prio2 INTEGER, prio2 INTEGER);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch(oldVersion){
case 1:
db.execSQL("ALTER TABLE pzc_haupt ADD COLUMN test TEXT");
break;
case 2:
db.execSQL("ALTER TABLE pzc_haupt ADD COLUMN test_2 TEXT");
break;
}
Alles anzeigen