Der Übergabeparameter SQLiteDatabase db ist eine bereits offene Verbindung zur Datenbank, die von SQLiteOpenHelper kommt. Betrachte es einfach als Geschenk, weil du dich jetzt selbst nicht mehr darum kümmern musst
Was du jetzt tun musst, ist in dein Methode folgendes einfügen:
Damit setzt du die Instanz der SQLiteDatabase auf deine Membervariable und du kannst von überall aus in der Klasse zugreifen, so wie du es eh schon gehandhabt hast. Also im Prinzip nur folgendes:
Java
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
Log.v("DatabaseHelper", "Datenbank Upgrade von " + oldVersion + " auf " + newVersion);
// Übergabeparameter db in mDb merken
mDb = db;
if (oldVersion < 2 && newVersion == 2) {
// fetchId benutzt mDb dann um aus der DB zu lesen
Cursor CursorOldTable = fetchId();
CursorOldTable.moveToPosition(-1);
// hier der restliche Code, den ich der Übersicht halber entfernt habe
}
}
Alles anzeigen
mDb ist jetzt nicht mehr null, du benutzt den Übergabeparameter, musst nicht selbst noch einmal mit open() eine Verbindung aufbauen weil dir bereits eine übergeben wurde und es müsste jetzt funktionieren.
Gruß,
matze