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

2021-07-25 13:03:43 字數 1998 閱讀 8153

在每一次執行程式的時候,判斷是否存在資料庫,如果不存在則直接建立資料庫,若存在取出資料庫版本號進行其他的處理.

那麼問題來了,為什麼我們需要將版本資訊加一呢,這是為了以後進行版本判斷的時候更加方便.

還有乙個問題,為什麼我們將版本資訊放入資料庫而不使用userdefaults快速儲存呢?原因是你需要考慮到

判段他的資訊是否需要更新

所以每更新一次版本,如果資料結構資訊有變動的時候,直接在後面加case語句即可.

下面是一些參考**,使用fmdb庫:

/**

* 1.當沒有資料庫存在的時候,建立資料庫 然後執行版本1的建立(建立版本表,建立資訊表),儲存1.0+1.0資訊到版本庫,資料庫內版本號為2.0

2.當有資料庫存在的時候,執行判斷版本庫的版本資訊,版本號賦值給dbversion,然後進行資訊的更新,同時更新版本號的更新

*/-(instancetype)init

else

switch (dbversion)

case

2:

case

3: [self excutelocalsql:modify];

[self setdbinfovaluewithstring:@"4.0"];

default:

break;}}

return

self;

}

使用的方法:

//使用的sql語句

static

nsstring *createtb_info=@"create table if not exists t_info (version text)";

static

nsstring *create_tusersql = @"create table if not exists t_user (userid integer not null primary key autoincrement, username text, usergender text, usercreatetime date, userupdatetime date,age integer,islogined integer)";

static

nsstring * update_tusersql = @"alter table t_user add column useraddress text";

static

nsstring *modify=@"alter table t_user add column password text not null default '111111'";

//判斷是否存在資料庫

-(bool)i***istdb

//得到路徑

-(nsstring *)getdbpath

#pragma mark - 更新版本號

-(bool)updateversioninfowithstring:(nsstring *)version

#pragma mark - 插入版本號

-(bool)insertversioninfowithstring:(nsstring *)version

#pragma mark - 建立版本資訊

- (bool)setdbinfovaluewithstring:(nsstring *)string

else

return

yes;

}//得到版本資訊

- (nsstring *)getdbinfovalue

return version;

}#pragma mark - 建立資料庫中的表

- (bool)excutelocalsql:(nsstring *)createtb_info

#pragma mark - 初始化資料庫

- (void)createdb

else

}

iOS APP新版本公升級資料庫

typedef ns enum nsinteger,dbversion static nsstring const dbversionnum dbversionnum static nsstring const dbpath tmp tmp.db 資料庫位址 static nsstring cons...

資料庫公升級

公升級 的版本時,我們有時候希望可以把原資料庫中的資料也保留下來,那麼這個時候我們就需要用到資料庫的公升級。在 android 中sqliteopenhelper 中定義了 onupgrade sqlitedatabase db,int oldversion,int newversion 函式來進行...

influxdb時間序列資料庫版本公升級

influxdb0.9x和1.0x版本的資料儲存引擎不一致,前者是bz或bz1,後者是tsm,如果直接公升級,不更改儲存引擎,1.0x版本無法讀出0.9x的資料。公升級方式是停止influxdb並之後解除安裝influxdb0.9x,解除安裝完成後安裝influxdb1.0x,先不要啟動服務,執行以...