9

SQLクエリを実行して結果を処理できるPhoneGapデータベーストランザクションが機能しています。ただし、再利用可能にするために、クエリ関数に引数を渡すために阿部である必要があります。グローバル変数を宣言し、クエリ関数でそれらにアクセス/リセットするよりも良い方法があるはずです。これを変換する際の助けに感謝します:

    //update images function
    function updateGalleryCovers() {
        var db = window.openDatabase("test db", "1.0", "Cordova DB", 200000);
        db.transaction(queryDB_u_g, errorCB);
    }
    //Query the database
    function queryDB_u_g(tx) {
        var query = 'SELECT cover_img, objectId FROM USER_GALLERY WHERE userId="'+getUserId()+'"';
        tx.executeSql(query, [], querySuccess_u_g, errorCB);
    }
//Query success callback
function querySuccess_u_g(tx, results) {
    var len = results.rows.length;
    for (var i=0; i<len; i++){
        // process results
    }
}

このようなものに:

    //update images function
    function updateGalleryCovers(userid) {
        var db = window.openDatabase("test db", "1.0", "Cordova DB", 200000);
        db.transaction(queryDB_u_g, userid, errorCB);
    }
    //Query the database
    function queryDB_u_g(tx, userid) {
        var query = 'SELECT cover_img, objectId FROM USER_GALLERY WHERE userId="'+userid+'"';
        tx.executeSql(query, [], querySuccess_u_g, errorCB);
    }
//Query success callback
function querySuccess_u_g(tx, results) {
    var len = results.rows.length;
    for (var i=0; i<len; i++){
        // process results
    }
}

ありがとう!

4

1 に答える 1

13

トランザクション関数は、phonegapではなくsqliteによって提供されます。sqliteが受け入れるメソッドシグネチャのために、関数に余分な変数を渡すことができないのは事実です。

しかし、これは同じための回避策です:

db_conn.transaction( function(tx){ your_function(tx, parameter1, parameter2) }, ErrorCallBack );

ここでは、ダミー関数をトランザクション成功コールバックに渡し、トランザクションオブジェクトを一緒に取得しています。

お役に立てば幸い

于 2013-01-17T08:49:53.857 に答える