2013-01-16 15 views
9

私はSQLクエリを実行して結果を処理できるPhoneGapデータベーストランザクションを持っています。しかし、再利用可能にするために、私はクエリ関数に引数を渡すためにabeになる必要があります。グローバル変数を宣言し、それらにアクセスする/照会機能でリセットするよりも良い方法があります。PhoneGapデータベーストランザクション関数に引数を渡す方法

//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 
    } 
} 

ありがとう:このような何かに

//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 
    } 
} 

:この変換で任意の助けに感謝!

+0

2番目の例はなぜ機能しませんか?変数を関数に渡して使用することができます。 – Leeish

+0

@Leeish:phonegap Database.transaction()メソッドは、クエリを実行する関数の名前とコールバック関数の名前を受け入れます。私が知っている議論を通過するための規定はありません。 http://docs.phonegap.com/en/2.3.0/cordova_storage_storage.md.html#Database – nikhilw

+0

私のコードのいくつかを見てみましょう... – Leeish

答えて

13

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

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

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

あなたが取引の成功コールバックにダミー関数を渡すと、それに伴ってトランザクションオブジェクトを取っています。

希望するもの

+0

その作品。ありがとう! – nikhilw

+0

txは何を表しますか? –

+0

ここでは、「トランザクション」 – SHANK