Параметр оператора обновления WSS2 DSS com.microsoft.sqlserver.jdbc.SQLServerException: неправильный синтаксис рядом с ':'
Я выполняю следующий оператор SQL Update в WSO2 DSS
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 ответа
Решение
Я попробовал это, поскольку у моего коллеги тоже есть эта проблема прямо сейчас. Кажется, что проблема вызвана возвратом каретки (введите) в выписке.
Попробуйте так без возврата каретки:
Update Door Set dcr_messageBox = :msg, dcr_servicesArea = :servArea Where dcr_regNo = :regNo
Это сработало для меня.
JC
В 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);