2013-01-16 11 views
9

पर तर्क कैसे पारित करें मेरे पास एक फ़ोनिंग डेटाबेस डेटाबेस लेनदेन है जहां मैं एक SQL क्वेरी चलाने और परिणामों को संसाधित करने में सक्षम हूं। हालांकि, इसे पुन: प्रयोज्य बनाने के प्रयास में, मुझे क्वेरीिंग फ़ंक्शन में तर्क पारित करने के लिए एबी होना चाहिए। वैश्विक चर घोषित करने और क्वेरी फ़ंक्शन में उन्हें रीसेट करने से उन्हें बेहतर तरीका होना चाहिए। कुछ इस तरह केफोनगैप डेटाबेस लेनदेन फ़ंक्शन

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

धन्यवाद!

+0

और आपका दूसरा उदाहरण क्यों काम नहीं करता है? मुझे पूरा यकीन है कि आप फ़ंक्शन में वेरिएबल पास कर सकते हैं और उनका उपयोग कर सकते हैं। – 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 स्वीकार करने के कारण कार्यों में अतिरिक्त चर पारित नहीं कर सकते हैं। आप लेन-देन सफलता कॉलबैक करने के लिए एक डमी समारोह से गुजर रहे हैं और उसके साथ लेन-देन वस्तु लेने

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

यहाँ:

लेकिन यहाँ उसी के लिए चारों ओर एक काम है।

आशा है कि

+0

जो काम करता है। धन्यवाद! – nikhilw

+0

टीएक्स के लिए क्या खड़ा है? –

+0

यहां पर टीएक्स का अर्थ है 'लेनदेन' – SHANK