android sqlite3 資料庫升級,加欄位
阿新 • • 發佈:2019-01-26
資料庫升級,新增欄位。
比如原本的表結構是這樣的:
CREATE TABLE group (
_uid NVARCHAR NOT NULL PRIMARY KEY
_member NVARCHAR
);
對應的程式碼是:
@Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE IF NOT EXISTS " + "group (" + "_uid NVARCHAR NOT NULL PRIMARY KEY," + " _member NVARCHAR" + ");"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 初始的時候,這裡面不需要任何邏輯 }
原本的版本號是:int VERSION = 3;
這裡的3
是初始值,只要大於0 就可以。
現在如果有一個需求,是新增一個欄位,比如新增一個_address
欄位,那麼,操作步驟就是:
- 升級資料庫版本 為
4
; - 修改
onCreate()
裡面的建立表的程式碼,新增新欄位。 - 在
onUpgrate()
裡面,要執行表修改,新增欄位的邏輯。
資料庫升級程式碼如下:
int VERSION = 4; // 原本是 3 , 由於資料庫升級,這裡改成 4. @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE IF NOT EXISTS " + "group (" + "_uid NVARCHAR NOT NULL PRIMARY KEY," + " _member NVARCHAR," + "_address NVARCHAR" // 修改 建立表的邏輯,新增新欄位 + ");"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { switch (oldVersion) { case 3: String sql = "ALTER TABLE group" + " ADD COLUMN _address NVARCHAR"; db.execSQL(sql); // 執行修改表,新增欄位的邏輯。 case 4: // 當前版本就是4,所以目前程式碼不會進入 case 4: .. 裡面來,只會進入 case 3 裡面 // xxx 注意,這裡不要 break; 要能一直升級。 } }
以上,就是資料庫升級,新增欄位的全部邏輯了。