在 Android 中,我使用 SQLite 資料庫并具有包含 ID、名稱、年齡的結構。
用戶可以將資料庫備份到 Google Drive。直到現在一切正常。
問題是,我正在開發我的應用程式的新版本,并且正在向資料庫中添加另一列。所以它看起來像 ID、姓名、年齡、性別。
我用 解決了這個問題onUpgrade(SQLiteDatabase db, int i, int i1),所以如果 DB 的版本比當前版本舊,當我通過 ALTER 表添加新列時,它將在升級時運行。
到現在為止還挺好。但是如果用戶已經有了這個新資料庫,但在谷歌驅動器上有舊資料庫,他從云中恢復舊資料庫怎么辦?
當 db 檔案被舊版本替換時,onUpgrade 會立即運行,還是每次從云恢復后都需要強制運行 onUpgrade?
不確定 onUpgrade 何時執行 - 僅在應用程式啟動時,或任何時候呼叫任何資料庫操作并看到版本差異?
uj5u.com熱心網友回復:
當 db 檔案替換為舊版本時,onUpgrade 是否會立即運行...
不,onUpgrade()在替換資料庫后不會呼叫。
每次從云恢復后,我是否需要強制運行 onUpgrade?
你不應該打電話onUpgrade()。
還原程序完成后,您可以呼叫getWritableDatabase()或getReadableDatabase()打開資料庫。
此時,現有資料庫的版本和您的SQLiteOpenHelper類中的代碼的不同將呼叫onUpgrade().
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/350034.html
標籤:爪哇 安卓 sqlite android-sqlite
下一篇:洗掉回圈中直方圖的水平線
