我用jsp+orcle做的公告栏,如果是从word中复制的内容,其中多数包含特殊字符 这些的,数据库会把这些字符当作语句中的标点,如多个单引号则会当作语句中的单引号,这样就会报错,这种该如何解决呢?

解决方案 »

  1.   

    在执行sql插入前将特殊字符进行替换,如:
    String str="";
    str = str.replaceAll("'","''");
      

  2.   

    估计LZ是用直接写SQL语句的方式吧,用参数的方式试试看
    大概思路
    PrepareStatement stmt = your_conn.prepareStatement(your_sql);
    stmt.setString(your_param_index, your_param_value);
    stmt.executeUpdate();
      

  3.   

    所以说不要使用 Statement,应该使用 PreparedStatement 就不存在这种问题了。
      

  4.   

    我的语句内容就像咱们现在回复框一样,有插入超级链接,表格,设置左对齐这些,都是html语言,就是这些造成的,用什么方法能保证下次查出来内容还能显示表格这些,而且能正常运行,用什么方法好呢?
      

  5.   

    public static String HtmlEncode(String input) throws Exception
    {
       String result=input;
       result=result.replace(" ","&nbsp");
       result=result.replace("<","&lt");
       result=result.replace(">","&gt");
       result=result.replace("\n","<br>");
       result=result.replace("\","&quot;");
       return result;
    }
      

  6.   

    将一个单引号替换为两个即可
    sql = sql.replaceAll("'","''");
      

  7.   

    PreparedStatement和参数就可以了
      

  8.   

    同意不使用 Statement,应该使用 PreparedStatement 参数传递就不存在这种问题了。
      

  9.   

    一个单引号弄成2个
    sql = sql.replaceAll(" '"," ' '");
      

  10.   

    补充一点,尽量不要使用String.replaceAll(String arg1, String arg2)这个方法,因为arg1可以是正则表达式的字符串,
    使用之后会越改越乱,比如说arg1="."就会把所有字符都替换成arg2 :(
    所以说最好使用String.replace(String arg1, String arg2)这个方法,具体区别参见J2SE API DOC。
      

  11.   

    PrepareStatement stmt = conn.prepareStatement(your_sql);
    stmt.setString(your_param_index, your_param_value);
    stmt.executeUpdate(); 用? 传递参数. 不要自己拼装sql.
      

  12.   

    PrepareStatement stmt = conn.prepareStatement("insert into test (title) values(?)");
    stmt.setString(1, "fd,fds'fds'fd,");
    stmt.executeUpdate();  用参数吧  类似这样的 如果你每一个特殊符号都用转义字符的话 那累死了
      

  13.   

    sql插入前将特殊字符进行替换
      

  14.   

    使用PrepareStatement
      

  15.   

    用replace只是一时快感
    使用PrepareStatement才是正道
      

  16.   

    不要使用 Statement,应该使用 PreparedStatement 就不存在这种问题了。
      

  17.   

    欢迎加入本人的QQ群,群号5586686,身份认证输入如:JAVA、JSP、STRUTS等都可以,非软件开发人员勿加,谢谢合作!