我目前在iTunes应用商店中有一个iPhone应用程序,它使用SQLite数据库作为数据存储.用户可以将应用程序与Web服务同步,然后将返回的数据存储在SQLite数据库中.用户还可以将新项目插入数据库,并将其更改同步回Web服务.
当连接打开到应用程序的本地数据库时,代码检查以确认数据库文件是否存在于"Documents"文件夹中,如果数据库文件不是通过从"Resources"文件夹复制到"Documents"文件而创建的.夹.
我必须发布应用程序的更新.此更新包含数据库架构更改(新表,列等).根据我的阅读,"Documents"目录中的文件将保留在应用程序更新中,这意味着更新后现有数据库仍将完好无损.
我的问题是,如何用我更新的数据库替换现有数据库,有没有办法在不丢失现有数据库中的数据的情况下这样做?是否存在某种"更新后首次运行"事件,我可以使用它来执行数据库更新,或者我是否必须对现有数据库进行某种检查(查找新列或表)以及检查是否失败手动更换/更新数据库?
谢谢!
您应该将应用程序的当前版本号存储在某个持久的位置 - 在数据库中,或者更好地存储在默认数据库中.启动时,您的应用会将其自己的版本号与持久版本号进行比较.如果它们不同,则这是更新后的第一次运行.如果不存在持久版本号,那么显然这也是更新后的第一次运行.
至于更新数据库,如果它已经到位,您将使用通常的SQL ALTER命令来更新模式,并同时执行任何数据库数据迁移.