-
Carson 小试身手Lv3
发表于2018-7-3 11:12
悬赏1
已解决
楼主
在定义了SQL数据源之后,怎么样把中文的参数传到SQL里面呢?
where T1.KMMCHZ = <#=@fylx#>
像这段当中传中文参数是有问题的
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'ä¸šåŠ¡å®£ä¼ è´¹' in 'where clause'
at sun.reflect.GeneratedConstructorAccessor196.newInstance(Unknown Source) ~[na:na]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_80]
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_80]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) ~[mysql-connector-java-5.1.5.jar:na]
应该是中文当中的引号没有传进去。
直接给这个参数:\'业务宣传费\' 这样子也是不行
你看有什么好的传中文参数的方案没?
where T1.KMMCHZ = <#=@fylx#>
像这段当中传中文参数是有问题的
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'ä¸šåŠ¡å®£ä¼ è´¹' in 'where clause'
at sun.reflect.GeneratedConstructorAccessor196.newInstance(Unknown Source) ~[na:na]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_80]
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_80]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) ~[mysql-connector-java-5.1.5.jar:na]
应该是中文当中的引号没有传进去。
直接给这个参数:\'业务宣传费\' 这样子也是不行
你看有什么好的传中文参数的方案没?
4个回答
这个应该是数据库里面本身就对单引号这种无法识别的
我本地用oralce测试了一下,oracle中字符本身需要用单引号识别,但是数据库字段的值又包含单引号,这个时候只能将数据库里面的值转换成两个单引号才能识别,您看看我这个测试案例
附上测试案例sql数据源的写法
select * from permisson where login_dept_id = '<#=substitute(@sql111,"'","''")#>'