Phonegap(Android) - 数据库changeVersion无法正常运行

时间:2012-08-06 19:35:45

标签: javascript android cordova

如果我获取数据库对象(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上进行某种替代方式,我会非常感谢这些信息。

3 个答案:

答案 0 :(得分:3)

这实际上很容易解决。

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

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

它会起作用。

答案 1 :(得分:0)

Android 2.2中也会出现此问题。

  

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

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

答案 2 :(得分:0)

请通过以下链接,介绍实现数据库版本控制的方法。

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

我可以使用所有2.3.x设备进行成功操作,但是使用4.x.x安卓设备会出现“无法调用方法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.');
}

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