簡體   English   中英

IBM Worklight-在SQL適配器查詢中使用變量時出錯

[英]IBM Worklight - Error while using variable in a SQL Adapter query

我在worklight中使用SQL適配器,在其中我需要一個變量,需要在查詢中使用它。

在這里閱讀並遵循相同的內容。 但它顯示以下錯誤。

在SQL適配器中使用變量粘貼了完整的錯誤消息。

  [ERROR   ] FWLSE0099E: An error occurred while invoking procedure  [project Sample]Device/SqlStatementFWLSE0100E:  parameters: [project Sample]{
   "arr": [
      {
         "parameters": [
            null
         ],
         "preparedStatement": "UPDATE devices SET DeviceQuantity=$[count] WHERE DeviceNames = 'DellTestLap';"
      }
   ]
}
Parameter index out of range (1 > number of parameters, which is 0)..
Performed query:
UPDATE devices SET DeviceQuantity=$[count] WHERE DeviceNames = 'DellTestLap';
FWLSE0101E: Caused by:  [project Sample]java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0). 
                                                                                                               com.worklight.common.log.filters.ErrorFilter

Project.js

     function UpdateDeviceDetails(){


            var count = 2;
            var invocationData2 = {
            adapter : 'Device', // adapter name
            procedure : 'UpdateDeviceDetails', // procedure name
            parameters : [count] 

        };



        WL.Client.invokeProcedure(invocationData2,{
            onSuccess : QuerySuccess,
            onFailure : QueryFailure
        });
}

Adapter.js

var DeviceDetails  = WL.Server.createSQLStatement("UPDATE devices SET DeviceQuantity=$[count] WHERE DeviceNames = 'DellTestLap';");

function UpdateDeviceDetails(count) {

    return WL.Server.invokeSQLStatement({
        preparedStatement :DeviceDetails,
        parameters : [count]
    });
}

我從未在SQL適配器中使用$ [variable_name]語法。 我一直都用“?”

“更新設備SET DeviceQuantity =?WHERE DeviceNames ='DellTestLap';”

但是,假設此語法有效,那么您的代碼如何引用名稱“ count”? 變量“ count”被解析為數字2。SQL語句將無法僅通過變量名就知道引用名稱計數。 如果傳遞給參數的變量更像這樣:

return WL.Server.invokeSQLStatement({
        preparedStatement :DeviceDetails,
        parameters : [{ count: 2 }]
    });

話雖這么說,我以前從未使用過這種語法,而只是使用“?” 句法。

您還可以使用?的語法

var DeviceDetails  = WL.Server.createSQLStatement("UPDATE devices SET DeviceQuantity=? WHERE DeviceNames ='DellTestLap';");

一定可以嘗試的!!!!!!!!!!!!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM