2013-01-16 18 views
9

Ho una transazione di database PhoneGap funzionante in cui sono in grado di eseguire una query sql ed elaborare i risultati. Tuttavia, nel tentativo di renderlo riutilizzabile, ho bisogno di essere abe per passare argomenti alla funzione di query. Ci dovrebbe essere un modo migliore di dichiarare variabili globali e accedervi/resettare nella funzione di query. Apprezzare tutto l'aiuto nella conversione di questo:come passare argomenti alla funzione di transazione del database 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 
    } 
} 

a qualcosa di simile:

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

Grazie!

+0

E perché il tuo secondo esempio non funziona? Sono abbastanza sicuro che puoi passare le variabili nella funzione e usarle. – Leeish

+0

@Live: Il metodo phonegap Database.transaction() accetta i nomi delle funzioni che eseguono la query, seguite dai nomi delle funzioni di callback. Non vi è alcuna disposizione per passare un argomento che io conosca. http://docs.phonegap.com/en/2.3.0/cordova_storage_storage.md.html#Database – nikhilw

+0

Lasciatemi guardare un po 'del mio codice ... – Leeish

risposta

13

Le funzioni di transazione sono offerte da sqlite e non fonegap. È vero che non è possibile passare variabili extra alle funzioni a causa della firma del metodo che sqlite accetta.

ma qui è un lavoro in giro per lo stesso:

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

Qui si passa una funzione fittizia alla transazione successo callback e prendendo l'oggetto di transazione con esso.

Speranza che aiuti

+0

che funziona. Grazie! – nikhilw

+0

cosa significa tx? –

+0

tx qui significa "transazione" – SHANK

Problemi correlati