页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题

J2EE 码拜 10年前 (2015-04-16) 1372次浏览 0个评论

使用的是ssi框架mybatis这里接收的前台传过来的对象,例如  Comment对象中的 content属性的值中有英文状态下的单引号,那么解析到sql语句中的时候sql语句就会报错,不要说什么替换的的问题那个工作量太大,我总不能每个字段接收过来都去调用一下替换的方法吧,有没有什么比较好的解决办法,这应该是会经常遇到的问题,求大神~~~~

页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
2分
配置文件里用<![CDATA[   ]]>包裹你的sql语句
页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
“”fffffff
页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
<![CDATA[  select * from dual where name=””aa””bb””  ]]>  就算这样也一定会报错的呀…
页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
2分
str.replace(“”””, “”””””).
页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
2分
传入的时候你要用&apos;吧。
页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
10分
我用的是springmvc+mybatis, 从没出现过你的问题. 各种中英文下的所有单双引都没问题的. 
你发下你出问题的那个mapper配置文件看下.
页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
2分
先确认,你这个 ‘  是你传的必须值么,还是说是不需要的,被传进来了。

如果是必须值,那你考虑ibatis配置的问题

如果不是,而是传输过程中产生的,那你就要考虑 页面提交的时候,传到后台是不是参数传递的时候输错了

页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
2分
楼主把错误代码填出来大家看看  学习一下。以后遇到也好处理
页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
引用 6 楼 nich002 的回复:

我用的是springmvc+mybatis, 从没出现过你的问题. 各种中英文下的所有单双引都没问题的. 
你发下你出问题的那个mapper配置文件看下.

<insert id=”saveComment” parameterType=”Comment”>
<![CDATA[
INSERT INTO COMMENT (
is_deleted,
create_date,
update_date,
CODE,
member_code,
discussed_code,
feedback
)
VALUES
(
“”n””,
NOW(),
NOW(),
“”${code}””,
“”${member_code}””,
“”${discussed_code}””,
“”${feedback}””
)
]]>
</insert>
这是一个评论的sql ,对于评论来说,我输入一个英文状态下的单引号不是很正常吗,,,, 
Comment.feedback=”回复内容“”啊啊”

页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
2分
你试试改下你tomcat的默认编码格式
页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
10分
貌似 $ 在mybatis中不友好, 官方强烈推荐用 #{ }
页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
引用 11 楼 nich002 的回复:

貌似 $ 在mybatis中不友好, 官方强烈推荐用 #{ }

正解,,刚试了下这种方法,可以的

页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
1分
“”aa””bb”” 
你这拼的有问题吧,中间怎么多了一个
页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
引用 11 楼 nich002 的回复:

貌似 $ 在mybatis中不友好, 官方强烈推荐用 #{ }

如果我要模糊查询的话使用 #{}怎么来写呢

页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
7分
引用 14 楼 sun5769675 的回复:
Quote: 引用 11 楼 nich002 的回复:

貌似 $ 在mybatis中不友好, 官方强烈推荐用 #{ }

如果我要模糊查询的话使用 #{}怎么来写呢

select * from user where name like concat(“”%””, #{username, jdbcType=VARCHAR),””%””)

页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
引用 14 楼 sun5769675 的回复:
Quote: 引用 11 楼 nich002 的回复:

貌似 $ 在mybatis中不友好, 官方强烈推荐用 #{ }

如果我要模糊查询的话使用 #{}怎么来写呢

select * from user where name like concat(“”%””, #{username, jdbcType=VARCHAR},””%””) 上个打错了个 回括号.

页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
引用 14 楼 sun5769675 的回复:
Quote: 引用 11 楼 nich002 的回复:

貌似 $ 在mybatis中不友好, 官方强烈推荐用 #{ }

如果我要模糊查询的话使用 #{}怎么来写呢

我也顺便毛遂自荐一哈.  以前翻译了篇mybatis官网上的文章, 或许能解释为什么 $不好使, 而# 却可以.
http://blog.csdn.net/nich002/article/details/8930059

页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
引用 16 楼 nich002 的回复:
Quote: 引用 14 楼 sun5769675 的回复:
Quote: 引用 11 楼 nich002 的回复:

貌似 $ 在mybatis中不友好, 官方强烈推荐用 #{ }

如果我要模糊查询的话使用 #{}怎么来写呢

select * from user where name like concat(“”%””, #{username, jdbcType=VARCHAR},””%””) 上个打错了个 回括号.

嗯,谢谢~


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明页面提交的内容中带有英文单引号,传到后台sql中,sql语句报错问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!