WSO2 DSS更新语句参数com.microsoft.sqlserver.jdbc.SQLServerException:'附近的语法不正确:'

时间:2016-01-15 08:24:02

标签: sql-server jdbc wso2 wso2dss dss

我在WSO2 DSS中执行以下SQL Update语句

Update Door
Set dcr_messageBox = :msg, dcr_servicesArea = :servArea
Where dcr_regNo = :regNo

我将此查询公开为休息服务。我一直收到以下错误

Current Request Name: _putdoorproperty
Current Params: {servArea=21, regNo=313, msg=21}
Nested Exception:-
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near ':'.

</soapenv:Text></soapenv:Reason><soapenv:Detail><axis2ns646:DataServiceFault xmlns:axis2ns646="http://ws.wso2.org/dataservice"><axis2ns646:current_params>{servArea=, regNo=3123, msg=}</axis2ns646:current_params><axis2ns646:current_request_name>_putdoctorproperty</axis2ns646:current_request_name><axis2ns646:nested_exception>com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near ':'.</axis2ns646:nested_exception><axis2ns646:source_data_service>

任何人都有任何想法可能是什么?

2 个答案:

答案 0 :(得分:1)

我已经尝试过了,因为我的一位同事现在也有这个问题。似乎问题是由于语句中的回车(输入)引起的。

尝试这样,没有任何回车:

Update Door Set dcr_messageBox = :msg, dcr_servicesArea = :servArea Where dcr_regNo = :regNo

这对我有用。

JC

答案 1 :(得分:0)

在JDBC中,变量的默认占位符为?。不支持:msg等命名参数的常见用法(通过独立JDBC)

您需要将查询转换为

Update Door
 Set dcr_messageBox = ?, dcr_servicesArea =?
  Where dcr_regNo = ?

然后执行PreparedStatement

ps.setInt(1, msg);
ps.setInt(2, servArea);
ps.setInt(3, regNo);