![](/img/trans.png)
[英]IBM Worklight - Unable to display data retrieved using SQL adapter
[英]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.