我有一个有效的PhoneGap数据库事务,我可以运行SQL查询并处理结果。但是,为了使其可重用,我需要abe将参数传递给查询函数。应该有一种比在查询函数中声明全局变量并访问它们/重置更好的方法。感谢您转换此内容的任何帮助:
//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 :(得分:13)
交易功能由sqlite提供,而不是phonegap。由于sqlite接受的方法签名,你无法将额外的变量传递给函数。
但是这是一个相同的工作:
db_conn.transaction( function(tx){ your_function(tx, parameter1, parameter2) }, ErrorCallBack );
在这里,您将一个虚函数传递给事务成功回调并将事务对象与它一起传递。
希望有所帮助