javascript - 使用 sql 适配器进行删除操作时出错

标签 javascript sql ibm-mobilefirst mobilefirst-adapters

我正在使用 SQL 适配器并尝试从 MYSQL 数据库中删除行,但收到​​错误 worklight.js:5355 过程调用错误。运行时:没有为参数 1 指定值。执行的查询:从客户中删除,其中 id=?

image

//****************** SQL 适配器 ********************** *****

var procedurestat7 = WL.Server.createSQLStatement("delete from customer where id=?");
//preparedStatement.setLong(1, id);
function procedure7(id) {
    return WL.Server.invokeSQLStatement({
        preparedStatement : procedurestat7,
        parameters : [id]
    });
}

//****************** Main.js ********************** **************

function wlCommonInit(){
    /*
     * Use of WL.Client.connect() API before any connectivity to a MobileFirst Server is required. 
     * This API should be called only once, before any other WL.Client methods that communicate with the MobileFirst Server.
     * Don't forget to specify and implement onSuccess and onFailure callback functions for WL.Client.connect(), e.g:
     *    
     *    WL.Client.connect({
     *          onSuccess: onConnectSuccess,
     *          onFailure: onConnectFailure
     *    });
     *     
     */

    // Common initialization code goes here

    $("#view").load("pages/login.html");

};

function register(){
    $("#view").load("pages/register.html");
}



function validateLogin(u,p){
    var u = $("#usr").val();
    var p = $("#pass").val();

    localStorage.setItem('username', u);
    var invocationData = {
            adapter : 'SQL', // adapter name
            procedure : 'procedure4',
            parameters : [u,p]
    };

    WL.Client.invokeProcedure(invocationData,{
        onSuccess : loadSQLQuerySuccess, //success callback
        onFailure : loadSQLQueryFailure // failure callback
    });

    function loadSQLQuerySuccess(result){
        var data = result.invocationResult;
        data = data.resultSet;
        console.log(data);
        if(data == "" || data == null || data == undefined || data == [] || u == "" || u == " " || u == null || u == undefined || p == "" || p == " " || p == null || p == undefined ){
            $("#lgError").show();
            console.log('error');
        }
        else{
            console.log(u+" :: "+p);
            $("#view").load("pages/data.html");
            var uname = localStorage.getItem('username');
            console.log(uname);
            $("#uname").append(uname);
        }
    };

    function loadSQLQueryFailure(result){
        var data = result.invocationResult;
        console.log("failed");

    };
};

function RegLogin(ru,rp){
    var ru = $("#rusr").val();
    var rp = $("#rpass").val();
    localStorage.setItem('username', ru);
    var invocationData = {
            adapter : 'SQL', // adapter name
            procedure : 'procedure5',
            parameters : [ru,rp]
    };

    WL.Client.invokeProcedure(invocationData,{
        onSuccess : rloadSQLQuerySuccess, //success callback
        onFailure : rloadSQLQueryFailure // failure callback
    });

    function rloadSQLQuerySuccess(result){
        var data = result.invocationResult;
        data = data.resultSet;
        if(data == "" || data == null || data == undefined || data == [] ){
            alert("User Registered successfully");
            $("#view").load("pages/login.html");

        }
        else{
            alert("Error");
        }
    };

    function rloadSQLQueryFailure(result){
        var data = result.invocationResult;
        $("#rgError").show();
    };
};

var invocationData = {
        adapter : 'SQL', // adapter name
        procedure : 'procedure3'
};

WL.Client.invokeProcedure(invocationData,{
    onSuccess : loadSQLQuerySuccess1, //success callback
    onFailure : loadSQLQueryFailure1 // failure callback
});

function loadSQLQuerySuccess1(result){
    var data = result.invocationResult;
    console.log("success");
};

function loadSQLQueryFailure1(result){
    var data = result.invocationResult;
    console.log("failed");
};

function custTable(){
    var custInvokeData = {
            adapter:'SQL',
            procedure:'procedure6'

    }

    WL.Client.invokeProcedure(custInvokeData,{
        onSuccess: custSuccess,
        onFailure: custfailure
    });
}

function custSuccess(result){
    var data = result.responseJSON;
    var isSuccess = data.isSuccessful;
    var resultSet = data.resultSet;
    console.log(resultSet.length);
    console.log('Success Customer Data: '+JSON.stringify(data));
    if(isSuccess == true){
        console.log('true');
        var out = "";
        for(var i = 0; i<resultSet.length; i++){
            out += "<tr><td>"+resultSet[i].name+"</td><td>"+resultSet[i].des+"</td><td><span class='custid' onclick='deleteData("+resultSet[i].id+")'>X</span></td></tr>";
        }
        document.getElementById('data').innerHTML = "<table><tr><th>Name</th><th>Desc</th><th>Del</th></tr>" +out+"</table>";
    }
    else
        {
        console.log('false');
        }
}

function custfailure(result){
    var data = result;
    console.log('Success Failure Data: '+JSON.stringify(data));
}

function deleteData(id){
    console.log('Delete function called');
    var id = "";
    var custDelData = {
            adapter:'SQL',
            procedure:'procedure7',
            parameter: [id]
    }

    WL.Client.invokeProcedure(custDelData,{
        onSuccess: DelSuccess,
        onFailure: Delfailure
    });
}

function DelSuccess(){
    console.log('deleted');
}
function Delfailure(){
    console.log('not deleted');
}

最佳答案

您应该传递一个 ID 值,但在 procedure7 中您将其设置为:var id = "",然后将其作为 id 传递...也许这就是你的问题?

function deleteData(id){
    console.log('Delete function called');
    var id = "";
    var custDelData = {
            adapter:'SQL',
            procedure:'procedure7',
            parameter: [id]
    }


    WL.Client.invokeProcedure(custDelData,{
        onSuccess: DelSuccess,
        onFailure: Delfailure
    });
}

关于javascript - 使用 sql 适配器进行删除操作时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37316208/

相关文章:

javascript - 如何使用YouTube API获取相关视频的数量?

android - 使用 Chrome 调试 Android 设备时如何在“网络”选项卡下跟踪 MobileFirst 7.1 服务器查询?

ios - IBM Worklight - 从 native 页面调用适配器

sql - 获取在 2 列中具有相同值但在第 3 列中具有不同值的记录

ios - IBM Worklight ApplicationCenter 的 Apple 开发人员 ID

javascript - 如何确定哪一行导致了 404 错误?

javascript - 打开后替换模态内容? AngularUI Bootstrap

javascript - 如何检查1秒内是否触发了mousemove事件

sql - 如果行存在,我该如何编写返回 True 的函数?

sql - 排除连接中的重复字段