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

この問題はAndroid2.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

私が見る唯一の解決策は、私自身のバージョン管理を回避することです。

于 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 に答える