public static String string2DBString(String s)
    {
        if (s == null)
        {
            return "";
        }        StringBuffer sb = new StringBuffer(20);        for (int i = 0; i < s.length(); i++)
        {
            char c = s.charAt(i);
            if (c == '\\')
            {
                sb.append("\\\\");
            }
            else if (c == '\"')
            {
                sb.append("\\\"");
            }
            else if (c == '\'')
            {
                sb.append("\\\'");
            }
            else
            {
                sb.append(c);
            }
        }        return new String(sb);
    }这个方法是在写db2数据库sql语句的时候,对sql语句的一个处理,问一下,这么处理是什么意思呢?这个对字符的转换有什么作用呢?为什么要这么处理呢?

解决方案 »

  1.   

    给你看个例子你就知道为什么要转换了。
    比如你的一个查询语句是:
    String sqlStr="slect * from yourTable where ColumnName='"+str+"'";
    如果你的str="aaa'a"含有'而且没转换,
    那么sqlStr="slect * from yourTable where ColumnName='aaa'a"
    看出问题所在了吧,"也是一样的有这错误。
    而'\'在从数据库中读入读出则可能被当成转义字符。
      

  2.   

    这个我知道阿,就是为什么要转呢,我原来的就没有\阿,你还转什么呢,我的sql语句中根本就没有\阿!就是哪些特殊符号需要转呢?比如说单引号‘’或者上引号“”之类的东西!
      

  3.   

    sql语句是不会有,谁有毛病在sql语句里加一个 "\" 或者 "\\" ,那还能执行吗但表里的内容中可能会有.在拼sql语句的时候可能会破坏sql语句
      

  4.   

    \在数据库里读出是没问题的,但如果你读出一个字符串"\\aaa",那么编译后JAVA就把它当作是\aaa了啊。你自己再好好想想是不是这么回事。