如何使用WSO2将动态值传递给Sql
我的要求是传递动态值,我只是暂时硬编码这些值,有人能帮我吗。提前感谢。(db2数据库) 从类似sname的学生中选择sname(“%abc123%”)如何使用WSO2将动态值传递给Sql,wso2,db2,wso2esb,wso2dss,Wso2,Db2,Wso2esb,Wso2dss,我的要求是传递动态值,我只是暂时硬编码这些值,有人能帮我吗。提前感谢。(db2数据库) 从类似sname的学生中选择sname(“%abc123%”) 它正在按预期拾取值。但我只是在DSS中硬编码了它,如何动态传递它?下面是示例服务 <data name="dssTest" transports="http https local"> <config enableOData="false" id="TestDB"> <prop
它正在按预期拾取值。但我只是在DSS中硬编码了它,如何动态传递它?下面是示例服务
<data name="dssTest" transports="http https local">
<config enableOData="false" id="TestDB">
<property name="driverClassName">...</property>
<property name="url">...</property>
<property name="username">...</property>
<property name="password">...</property>
</config>
<query id="testQuery" useConfig="TestDB">
<sql>Select sname from student where sname like CONCAT('%', :whereclause, '%')</sql>
<result element="StudentData" rowName="Student">
<element column="snumber" name="snumber" optional="true" xsdType="string"/>
<element column="sname" name="sname" optional="true" xsdType="string"/>
</result>
<param name="whereclause" sqlType="QUERY_STRING"/>
</query>
<operation name="testQueryOp">
<call-query href="testQuery">
<with-param name="whereclause" query-param="whereclause"/>
</call-query>
</operation>
</data>
...
...
...
...
从student where sname like CONCAT(“%”,:where子句“%”中选择sname
调用此服务时,可以为where子句发送一个值
<body>
<p:testQueryOp xmlns:p="http://ws.wso2.org/dataservice">
<p:whereclause>abc123</p:whereclause>
</p:testQueryOp>
</body>
abc123
感谢Saad Bro的响应,但我无法执行抛出以下错误的操作{“rootCause”:null,“category”:“EISBackendException”,“message”:“DSS服务调用操作失败:getSname”,“timestamp”:“2018-06-27T18:00:37+0530”}后端日志:由以下原因引起:javax.xml.stream.XMLStreamException:DS错误消息:“SQLQuery.processPreNormalQuery”中的错误:DB2 SQL错误:SQLCODE=-440,SQLSTATE=428 84,SQLERRMC=CONCAT;函数,DRIVER=3.57.110 DS代码:DATABASE_ERROR源数据服务:-非常感谢您可以尝试将sqlType从使用“STRING”、“QUERY STRING”尝试的QUERY_STRING更改为STRING,抛出错误:)[2018-06-27 17:55:55470]ERROR{org.wso2.carbon.dataservices.core.DBInOutMessageReceiver}-in-in-out消息接收器DS代码错误:数据库_错误嵌套异常:-javax.xml.stream.XMLStreamException:DS错误消息:“SQLQuery.processPreNormalQuery”中的错误:DB2 SQL错误:SQLCODE=-440,SQLSTATE=42884,SQLERRM C=CONCAT;函数,DRIVER=3.57.110 DS代码:数据库\错误源数据服务:-请:)我不知道它的db2数据库。您是否可以尝试按如下方式更改查询,从student where sname-like-CONCAT(CONCAT(“%”,“:whereclause'),“%”)中选择sname,whereclause-sqlType应该是stringwhere-this是安全的?您正在将SQL作为HTTP参数传递。如何使用此方法抵御SQL注入攻击?让客户端手工编写SQL发送到查询也不是很实际。我想这只有在查询前面有一些ESB时才可行,但即使这样,它也很混乱。