在insert语句中包含特殊字符时出错
我用jsp+orcle做的公告栏,如果是从word中复制的内容,其中多数包含特殊字符 这些的,数据库会把这些字符当作语句中的标点,如多个单引号则会当作语句中的单引号,这样就会报错,这种该如何解决呢?
[解决办法]
在执行sql插入前将特殊字符进行替换,如:
String str="";
str = str.replaceAll("'","''");
[解决办法]
估计LZ是用直接写SQL语句的方式吧,用参数的方式试试看
大概思路
PrepareStatement stmt = your_conn.prepareStatement(your_sql);
stmt.setString(your_param_index, your_param_value);
stmt.executeUpdate();
[解决办法]
用参数的方式试试看
[解决办法]
听强人说话 up!
[解决办法]
用参数应该是可以的.
或者把符号转义一下.如"'"转义成"\'".
[解决办法]
所以说不要使用 Statement,应该使用 PreparedStatement 就不存在这种问题了。
[解决办法]
将一个单引号替换为两个即可
sql = sql.replaceAll("'","''");
[解决办法]
用2楼的方法试试吧,每个特殊字符没法都进行转义。
[解决办法]
PreparedStatement和参数就可以了
[解决办法]
同意不使用 Statement,应该使用 PreparedStatement 参数传递就不存在这种问题了。
[解决办法]
一个单引号弄成2个
sql = sql.replaceAll(" '"," ' '");
[解决办法]
replace.
[解决办法]
补充一点,尽量不要使用String.replaceAll(String arg1, String arg2)这个方法,因为arg1可以是正则表达式的字符串,
使用之后会越改越乱,比如说arg1="."就会把所有字符都替换成arg2 :(
所以说最好使用String.replace(String arg1, String arg2)这个方法,具体区别参见J2SE API DOC。
[解决办法]
PrepareStatement stmt = conn.prepareStatement(your_sql);
stmt.setString(your_param_index, your_param_value);
stmt.executeUpdate();
用? 传递参数. 不要自己拼装sql.
[解决办法]
学习,学习
[解决办法]
学习学习
[解决办法]
使用PrepareStatement就行了
[解决办法]
PrepareStatement stmt = conn.prepareStatement("insert into test (title) values(?)");
stmt.setString(1, "fd,fds'fds'fd,");
stmt.executeUpdate();
用参数吧 类似这样的 如果你每一个特殊符号都用转义字符的话 那累死了
[解决办法]
一个很值得研究的问题
呵呵
得好好看看输了
[解决办法]
sql插入前将特殊字符进行替换
[解决办法]
用replace只是一时快感
使用PrepareStatement才是正道
[解决办法]
不要使用 Statement,应该使用 PreparedStatement 就不存在这种问题了。
[解决办法]
用PreparedStatement 就OK了
[解决办法]
这种情况还是用参数比较省事,要不专门写个类来处理转换特殊字符也行
[解决办法]
强烈推荐使用PreparedStatement
[解决办法]
欢迎加入本人的QQ群,群号5586686,身份认证输入如:JAVA、JSP、STRUTS等都可以,非软件开发人员勿加,谢谢合作![b][/b]