【发布时间】:2012-06-10 13:08:43
【问题描述】:
我正在使用 PhoneGap 和 jQueryMobile 为 iOS 和 Android 构建一个跨平台的 HTML/Javascript 应用程序,并且我正在使用本地数据库 (localdatabase/websql) 的一个表中的一些新字段(其中包括)升级我的应用程序。
挑战 我想确保在使用新表字段、现有用户数据扩展数据库时,用户数据不会被删除或锁定在无法访问的旧版本数据库中。
背景: 我的应用程序有一个用户数据的本地数据库(收入和支出,加上一些设置)。这些数据需要持久化,当我开始时,要走的路是使用 HTML5 localDatabase 功能,因为它是持久的,并且可用于 iOS 和 Android 浏览器以及大多数桌面浏览器。
我正在使用一个名为 persistenceJS 的 Javascript 插件/库/thingy 来使处理 localdb 变得更容易一些。但我的问题并不是针对persistenceJS。
我正在开发一个新版本的应用程序,它使用了“设置”表中的一些新字段。所以当这些用户下载新应用并运行它时,它必须测试他们的设置表是否包含该字段,如果没有,则必须创建该字段。
如何进行此测试?我看到了两条思路:
使用在 openDatabase 函数中使用的数据库标签...。这似乎被一些开发人员用来存储版本号。 我对这个选项的问题是我只知道如何使用 openDatabase 打开一个数据库(如果不存在则创建一个新数据库),并在数据库尚不存在时专门运行回调。 因此,如果我在标签中指定诸如“v2”之类的内容时打开表,它会创建一个新表吗?如果是这样,它会将旧表的值复制到新表中吗?
检查表字段是否存在... 我可以使用 openDatabase 然后测试表字段的存在。如果他们没有,我可以添加它们。每次用户打开他们的应用时都会运行测试,这似乎有点原始。
顺便说一句: 我知道 webSQL/localDb 已经被霸主弃用了,但它仍然是我的工具,我现在想坚持下去。
【问题讨论】:
标签: html persistence web-sql local-database opendatabase