數據庫遷移
什么是數據遷移?
數據庫表結構發(fā)生了改變,或新增了表琢感,app更新的時候丢间,這些變化需要更新到新的app中
問題解決:
我自己弄了個 備份數據庫,數據遷移到備份數據庫驹针,新表結構創(chuàng)建后烘挫,把備份中的數據,寫入到新數據庫中柬甥。
sqlite 它是文件型數據庫饮六,直接用代碼可以拷貝一份他的db
一個db文件就是整個數據庫了
我做了一個宏定義#define APP_DB_NEW_VERSION_NUMBER 1 ,NSUserDefault里存它的值苛蒲,如果數據結構不變卤橄,宏定義的值不變;如果數據結構發(fā)生變化臂外,宏定義的值會+1,每次比較兩個值:
A:如果兩個值一樣虽风,就不做遷移處理;
B:如果宏定義的值比NSUserDefault大寄月,就執(zhí)行一下操作,操作步驟:
1.拷貝數據庫文件
2.打開已經拷貝好的備份數據庫
3.關閉原有數據庫
4.刪除原有db文件
5.創(chuàng)建新的db文件无牵,并打開
6.開始遷移數據
7.關閉備份數據庫
8.刪除備份數據庫
9.宏定義的值存到NSUserDefault里漾肮;
創(chuàng)建數據庫和表
用sqlite,他就會生成一個db文件,一個db就是一個數據庫茎毁,所以先創(chuàng)建db,db里建table克懊,如果一個db中創(chuàng)建多個table,可以把創(chuàng)建每個table的sql語句放在plist文件中。如下所示:
生了變化,上傳appstore
手機上A app 現有1.1.1版本橡卤,去app store上更新A app 1.1.2扮念, 沒有數據遷移會怎樣?碧库?柜与??
appStore更新和Xcode覆蓋運行是一樣的嵌灰,
卸載(整個數據庫都重新建了弄匕,肯定是新的結構了)重新下載