如何传递参数到PhoneGap数据库事务函数

how to pass arguments to PhoneGap database transaction function

本文关键字:数据库 事务 函数 PhoneGap 何传递 参数      更新时间:2023-09-26

我有一个工作的PhoneGap数据库事务,我能够运行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
    }
}

谢谢!

事务函数是由sqlite而不是phonegap提供的。确实,由于sqlite接受的方法签名,您不能向函数传递额外的变量。

但是这里有一个相同的工作:

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

这里你传递了一个虚拟函数到事务成功回调,并带走了事务对象。

希望有帮助