0
我想用新的數據庫替換以前的數據庫。要做到這一點我是替換android中的sqlite數據庫
- 檢查以前的user_version數據庫。
- 刪除舊數據庫。
- 從資產中複製新的數據庫。
- 更改新數據庫的user_version。
- 驗證新user_version這在我的情況是1
但是,當我重新啓動應用程序user_version再次變爲0,爲什麼它不保存「1」作爲新user_version?或者在編譯應用程序之前,我必須更改新數據庫的user_version。
這是我的代碼。
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();
}
編輯
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();
}
}
感謝您向我介紹SQLiteAssetHelper。但有時我需要從舊數據庫中獲取一些記錄。對我來說奇怪的是user_version的自動恢復。你能告訴我爲什麼會發生? – user934820
如何保留舊數據將是[不同的問題](http://stackoverflow.com/q/37094656/11654)。無論如何,不變的看起來像你的代碼中的其他地方的錯誤。 –
如果在編譯應用程序之前更改了新數據庫的user_version並刪除db.execSQL(「PRAGMA user_version = 1」);.它會好嗎? – user934820