app數(shù)據(jù)庫版本遷移(sqlite表結(jié)構(gòu)變更)

這篇文章介紹一個通用的app數(shù)據(jù)庫版本遷移處理,偷懶采用的FMDB封裝的數(shù)據(jù)庫,但是操作過程的邏輯是相同的。

先介紹一下使用場景:app內(nèi)嵌有本地數(shù)據(jù)庫,在app版本迭代過程中由需求導致的數(shù)據(jù)庫表結(jié)構(gòu)變動,這里僅介紹表字段的刪除和新增(sqlite不支持刪除或則修改表字段)

新增字段是原本就支持的功能,語句就是“ ALTER TABLE *** add *** ;” 如下圖:

新增表字段

刪除字段就比較麻煩了,畢竟sqlite不支持直接用ALTER語句處理,不像其它的數(shù)據(jù)庫,雖然如此,但還是有辦法解決的,簡單點的操作就是把原來的表備份一下,然后刪除,再把原來的建表語句改一改執(zhí)行一下,最后把備份數(shù)據(jù)還原回去,這邊做的主要是這個建表語句的自動化處理。首先先采用sql語句獲取表的CREATR sql代碼,然后對CREATR sql進行解析轉(zhuǎn)換成新的CREATR sql,剩下的都一樣了,具體如下圖:

刪除表字段

ps:數(shù)據(jù)庫操作時候需要避免同時讀寫(數(shù)據(jù)庫鎖)和線程死鎖。

至于修改表字段的可以參照刪除表字段思路進行處理,這里就不另行介紹了。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容