camel-sql get statement from headers



我使用的是这样的camel-sql组件:

<to uri="sql:select * from myTable?dataSource=#java:/MySqlDS"/>

现在我想做的是从一个头值中检索sql命令。根据文档,我尝试了这个:

<to uri="sql::#${headers.sql}?dataSource=#java:/MySqlDS"/>

结果是:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;在第1行的"从测试中选择*"附近,查看与MySQL服务器版本对应的手册,以获得要使用的正确语法

(请注意开头和结尾有两个单引号(使用${headers.sql}会导致:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;在第1行的"${headers.sql}"附近,查看与MySQL服务器版本相对应的手册,以获得要使用的正确语法

问题:我必须做些什么才能防止双引号并使用有效的Sql语法?

请注意,头值是在来自backingbean的路由中设置的,而不是在xml中,因此我不能这样做。。。或者我可以吗?:

<setHeader headerName="myHeader">
  <constant>myValue</constant>
</setHeader>

请参阅有关动态http://camel.apache.org/how-to-use-a-dynamic-uri-in-to.html例如,将<toD>用于动态。

最新更新