iOS APP新版本公升級資料庫

2021-07-10 12:18:58 字數 1713 閱讀 4923

typedef

ns_enum(nsinteger, dbversion) ;

static

nsstring *const dbversionnum = @"dbversionnum";

static

nsstring *const dbpath = @"\tmp\tmp.db"; //資料庫位址

static

nsstring *const createtable = @"create table if not exists t1("

"id integer primary key autoincrement not null,"

"name char(50),"

"*** char(4),"

"recorddate timestamp default (datetime('now', 'localtime')))";

首先定義了乙個列舉,標識著當前一共有多少資料庫版本變更。(客戶端資料庫結構更改不會太頻繁,如果更改太快,可能意味著初期表設計不合理),此次模擬共三個版本的資料庫。

- (instancetype)init

return

self;

}

採用fmdatabasequeue 進行資料庫操作的管理。

/*

* 需要初始化表結構時,呼叫此方法

*/- (void)newdbversioninitelse

case dbversionv2:

case dbversionv3:

break;

default:

break;}}

}

在這裡判斷dbversionnum系統之前是否儲存過,

沒有儲存說明是第一次安裝,則進行首次建立表處理。

有說明之前資料庫存在,進行資料庫表結構更改。如果是v1版本的資料庫 先從v1公升級到v2,在從v2公升級到v3,以此類推。

/*

* 建立新錶

*/- (void)createtables

@catch (n***ception *exception)

}];[[nsuserdefaults standarduserdefaults] setobject:[nsnumber numberwithinteger:dbversionv3] forkey:dbversionnum];

}

把 dbversionnum的值寫為v3版本 方便下次對比。

/*

* 版本1 向 版本2 資料遷移

*/- (void)v1tov2

@catch (n***ception *exception)

}] ;

[[nsuserdefaults standarduserdefaults] setobject:[nsnumber numberwithinteger:dbversionv2] forkey:dbversionnum];

}- (void)v2tov3] ;

[[nsuserdefaults standarduserdefaults] setobject:[nsnumber numberwithinteger:dbversionv3] forkey:dbversionnum];

}

上文提到的資料遷移流程就是如此。

yarn 公升級最新版本

yarn 公升級最新版本 npm install yarn latest g檢視yarn歷史版本 npm view yarn versions jsonyarn 公升級指定版本 例 公升級到1.21.3版本 yarn upgrade v1.21.3yarn 降低到指定版本 先解除安裝,再安裝 npm...

公升級資料庫

第一版只有book表 第二版加上category表 第三版為book表加上category id 列 book表 這是公升級後的原來沒有category id 列 public static final string create book create table book id integer ...

iOS App版本公升級時資料庫的遷移更新

在每一次執行程式的時候,判斷是否存在資料庫,如果不存在則直接建立資料庫,若存在取出資料庫版本號進行其他的處理.那麼問題來了,為什麼我們需要將版本資訊加一呢,這是為了以後進行版本判斷的時候更加方便.還有乙個問題,為什麼我們將版本資訊放入資料庫而不使用userdefaults快速儲存呢?原因是你需要考慮...