0

如果我获取一个数据库对象(db)并使用命令打开它

var db = window.openDatabase("phr", "", "Cognovant PHR", 25000000);
// This should open whatever database is created, otherwise spawn one with a blank
// version number ("")

然后再做:

db.changeVersion(db.version, "2"); // Update database to version 2
console.log(db.version); //Should return "2", instead returns previous version of database

这段代码在 iOS 上逐行运行完美(几乎比我希望的要好),但在 Android 上总是无法更改数据库版本。

如果有更好的方法可以做到这一点,或者需要在 Android 上完成一些替代方法,我将非常感谢这些信息。

4

3 回答 3

3

这实际上很容易解决。

只需将 db.changeVersion 的 2 参数版本更改为 3 参数版本。例子:

db.changeVersion(db.version, "2", function () {console.log("foobar")});

它会起作用。

于 2012-09-28T18:16:26.643 回答
0

Android 2.2 也会出现这个问题。

09-28 07:15:14.954:E/Web 控制台(280):TYPE_MISMATCH_ERR:DOM 异常 17:对象的类型与与对象关联的参数的预期类型不兼容。在文件:///android_asset/www/devbar/03%20db.js:158

我看到的唯一解决方案是使用我自己的版本管理来解决。

于 2012-09-28T07:28:46.167 回答
0

请通过以下链接,描述实现数据库版本控制的方式。

http://developer.apple.com/library/safari/#documentation/iphone/conceptual/safarijsdatabaseguide/UsingtheJavascriptDatabase/UsingtheJavascriptDatabase.html

我能够对所有 2.3.x 设备进行成功操作,但使用 4.xx android 设备会出现“无法调用方法 changeVersion”之类的问题,并且说方法未定义。

暂时我正在使用如下代码,

if (db.changeVersion) {
    db.changeVersion(oldVer, curVer, upgradeTableStructure, errorHandler, successDataHandler);
} else {
    createTableStructure(db);//If Not exist for first time for 4.x.y devices
    console.log('version changes not possible in this browser version.');
}

但这不是当前问题的正确解决方案,请提出一些解决方案。

于 2013-06-18T06:02:59.027 回答