簡體   English   中英

SQLite 數據庫升級

[英]SQLite Database Upgrading

我對 android SQLite 數據庫處理有點困惑。 我瀏覽了教程,但我沒有得到確切的意思。

我們可以有一個擴展SQLiteOpenHelper的數據庫 class ,並且可以覆蓋onCreate()方法並創建一個數據庫。

升級數據庫部分有點混亂。 在以下方法中,如何處理版本onUpdate(SQLiteDatabase db,int old Version,int newVerison)

是不是說我們第一次創建數據庫的時候版本是1。那么修改一次版本就變成2了。那么如果我們要再次修改old Version = 2, newVerison = 3
[ onUpdate(SQLiteDatabase db,int old Version,int newVerison) ]

當我們傳遞構造函數版本時,將執行此方法,如下代碼所示(如 2)

public DatabaseHelper(Context context) {
  super(context, dbName, null,2);
}

我需要知道當我們需要調用onUpgrade()方法時,我們應該始終將版本傳遞為 2,還是每次都必須為以前的版本增加一個。

每次架構更改時增加您的數據庫版本。

你永遠不需要直接調用onUpgrade Android 將在您打開數據庫時通過將數據庫版本與您的代碼指定為當前版本的版本進行比較來在需要時調用它。

您只需要在onUpgrade中處理升級過程 - 它可能 go 是這樣的:

int curVer = oldVersion;
while ( curVer < newVersion ) {
    curVer++;
    switch ( curVer ) {
        case 2: {
            // Upgrade from V1 to V2
            break;
        }
        case 3: {
            // Upgrade from V2 to V3
            break;
        }
        case 4: {
            // Upgrade from V3 to V4
            break;
        }
    }
}

假設您的 newVersion 為 4 而 oldVersion 為 1 - 第一次迭代會將 curVer 增加到 2 並將運行 V2 到 V3 升級代碼。 第二次迭代將 curVer 增加到 3 並運行 V2 到 V3 升級代碼,最后一次迭代將 curVer 增加到 4 並運行 V3 到 V4 升級代碼。

這適用於所有小於 newVersion 的 oldVersion 值。 如果您的用戶跳過應用程序的升級,它將通過中間版本順序升級。

我使用這種方法使數據庫模式演變更容易一些,您可能會發現它也很有用。

如何維護數據庫版本完全取決於您。 您可以在更改表結構或修改內容后更改您的版本。 維護版本控制沒有硬性規定。 這取決於項目的要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM