数据库迁移
什么是数据迁移?
数据库表结构发生了改变,或新增了表,app更新的时候,这些变化需要更新到新的app中
问题解决:
我自己弄了个 备份数据库,数据迁移到备份数据库,新表结构创建后,把备份中的数据,写入到新数据库中。
sqlite 它是文件型数据库,直接用代码可以拷贝一份他的db
一个db文件就是整个数据库了
我做了一个宏定义#define APP_DB_NEW_VERSION_NUMBER 1 ,NSUserDefault里存它的值,如果数据结构不变,宏定义的值不变;如果数据结构发生变化,宏定义的值会+1,每次比较两个值:
A:如果两个值一样,就不做迁移处理;
B:如果宏定义的值比NSUserDefault大,就执行一下操作,操作步骤:
1.拷贝数据库文件
2.打开已经拷贝好的备份数据库
3.关闭原有数据库
4.删除原有db文件
5.创建新的db文件,并打开
6.开始迁移数据
7.关闭备份数据库
8.删除备份数据库
9.宏定义的值存到NSUserDefault里;
创建数据库和表
用sqlite,他就会生成一个db文件,一个db就是一个数据库,所以先创建db,db里建table,如果一个db中创建多个table,可以把创建每个table的sql语句放在plist文件中。如下所示:
![5W6NIOZ2Z%YGK4@M2SDSS.jpg](http://upload-images.jianshu.io/upload_images/2607623-251664f65bbedd59.jpg?imageMogr2/auto-
思考
appstore中,存在A app 1.1.1版本
A app 1.1.2版本 ,数据结构发生了变化,上传appstore
手机上A app 现有1.1.1版本,去app store上更新A app 1.1.2, 没有数据迁移会怎样????
appStore更新和Xcode覆盖运行是一样的,
卸载(整个数据库都重新建了,肯定是新的结构了)重新下载