Phonegap (Android) - 数据库更改版本不起作用

Phonegap (Android) - database changeVersion not functioning

本文关键字:版本 不起作用 数据库 Android Phonegap      更新时间:2023-09-26

如果我拿一个数据库对象 (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上完成一些替代方法,我将非常感谢这些信息。

这实际上很容易解决。

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

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

它会起作用。

此问题也发生在Android 2.2中。

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

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

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

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

我能够在所有 2.3.x 设备上成功操作,但 4.x.x Android 设备遇到"无法调用方法更改版本"和说方法未定义等问题。

目前,我正在使用以下代码,

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.');
}

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