Ich möchte vorherige Datenbank durch neue Datenbank ersetzen. Um das zu tun, bin ichErsetzen SQL-Datenbank in Android
- Überprüfung auf vorherige user_version der Datenbank.
- Alte Datenbank löschen.
- Neue Datenbank aus Assets kopieren.
- Ändern der Benutzerversion der neuen Datenbank.
- Überprüfen neue user_version was in meinem Fall ist 1.
Aber wenn ich die Anwendung user_version geändert wieder auf 0 Neustart Warum ist sie nicht die „1“ als neue user_version zu speichern? Oder ich muss user_version der neuen Datenbank vor dem Kompilieren der App ändern.
Hier ist mein Code.
MySQLiteHelper db = MySQLiteHelper.instance();
int oldversion = db.getInteger("PRAGMA user_version");
Toast.makeText(MainActivity.this,oldversion + "", Toast.LENGTH_SHORT).show();
if (oldversion < 1) {
upgradeDB();// delete previous db and copy new one.
db.execSQL("PRAGMA user_version = 1");
int oldversion = db.getInteger("PRAGMA user_version");
Toast.makeText(MainActivity.this,oldversion + "", Toast.LENGTH_SHORT).show();
}
bearbeiten
void upgradeDB(){
db.renameDataBase();
db.copyDataBase();
db = MySQLiteHelper.instance();
MySQLiteUpdateHelper dbOld = MySQLiteUpdateHelper.instance();
int saved = dbOld.getInteger("select value from info where name='saved'");
int bookmark = dbOld.getInteger("select value from info where name='bookmarks'");
db.execSQL("UPDATE info set value = '" + saved + "' WHERE name = 'saved'");
db.execSQL("UPDATE info set value = '" + bookmark + "' WHERE name = 'bookmarks'");
File to = new File(db.DB_PATH, "old");
if (to.exists()) {
to.delete();
}
}
Vielen Dank, um mich mit SQLiteAssetHelper einzuführen. Aber manchmal muss ich einige Datensätze aus der alten Datenbank abrufen. Das Seltsame für mich ist die automatische Umkehrung von user_version. Kannst du mir sagen, warum es passiert? – user934820
Wie man alte Daten behält, wäre [eine andere Frage] (http://stackoverflow.com/q/37094656/11654). Wie auch immer, das Unveränderte sieht wie ein Fehler irgendwo anders in deinem Code aus. –
Wenn ich Benutzerversion der neuen Datenbank vor dem Kompilieren der App ändern und entfernen Sie db.execSQL ("PRAGMA user_version = 1") ;. Wäre es ok? – user934820