我有一个iOS应用程序,它使用SQLite DB来存储其数据模型.用户无法以任何方式更改此DB的内容.数据库内容改变的唯一方法是在未来的应用更新中添加更多内容.(该应用程序从不向DB写入内容,只读取内容)
因此,当我执行这样的更新时,我希望它在我正在创建的新版本中使用数据库的"更新"版本,并且只是摆脱旧的数据库.最好的方法是什么?有一种简单的方法可以告诉它在我更新时抓住新版本的数据库,还是需要为其编写自定义逻辑?
让我们从第一次安装应用程序开始讨论。sqlite 数据库将按照以下步骤初始化:
检查应用程序安装文件夹中是否存在 [appname].db。
如果此文件不存在,请在安装文件夹中创建一个空的 [appname].db 文件。
创建一条记录来指示当前应用程序版本并将其存储在名为“appversion”的表中(也可以存储在首选项文件中)。
从步骤3中存储的位置加载旧版本号,将其与当前版本号进行比较,并且您需要执行名为“[appname]_sql_v1.sql,[appname]_sql_v2.sql,[”的多个sql文件appname]_sql_v3.sql',请记住,每个版本都会拥有一个'[appname]_sql_v*.sql'文件,其中包含所有表架构更改并记录更改。如果您的应用程序已升级到版本7,您将在你的应用程序包中找到 7 个 sql 文件。
假设有人安装了版本为2的应用程序,但没有更新,直到有一天他/她发现当前版本是7,然后他/她将其升级到7。当他/她时,将加载两个代码版本号升级完成后首次启动应用程序:2和7,因此这些sql文件:[appname]_sql_v3.sql,[appname]_sql_v4.sql,[appname]_sql_v5.sql,[appname]_sql_v6.sql,[ appname]_sql_v7.sql将被一一执行。
记住这些事情:
1.不要将sql init语句放在代码中,将其放在sql文件中并根据需要将其读取到sqlite db。
2.每个版本都会拥有一个“[appname]_sql_v*.sql”文件,其中包含对先前版本所做的更改。
归档时间: |
|
查看次数: |
5830 次 |
最近记录: |