逃避postgresql中的特殊字符

时间:2012-09-19 08:14:49

标签: java jdbc escaping expression

我在postgres数据库中有以下字符串

  

ABC 123 !#$%*&'-(,)^?<\>~(())%%\\'',,//##$--++**??&&@!!~~\\

我希望用户能够在从屏幕输入时搜索这些特殊字符。但是,该程序不断抛出错误。我使用字符串来创建查询(这是框架性质,所以我不能改变=&gt;不能使用PreparedStatement),所以这个问题发生了。我尝试了下面的方法,看起来这个函数可以解析一些特殊字符但是当我从屏幕输入[@#$%*&'-(,)^?<\>~(())]并开始搜索时,它会抛出org.seasar.extension.jdbc.IllegalBindArgSizeRuntimeException

private String replaceSpecialCharacter(String str) {
    String strResult = str.replaceAll("\\\\", "\\\\\\\\\\\\\\\\");
     strResult = strResult.replaceAll("%", "\\\\\\\\\\\\%");

     strResult = strResult.replaceAll("%", "\\\\\\\\\\\\%");
     strResult = strResult.replaceAll("_", "\\\\\\\\\\\\_");
     strResult = strResult.replaceAll("_", "\\\\\\\\\\\\_");
     strResult = strResult.replaceAll("'", "\\\\\\\\\\\\'");
     strResult = strResult.replaceAll("\"", "\\\\\\\\\\\\\"");

     return strResult;
}

我想知道是否有办法解决这个问题?

非常感谢

0 个答案:

没有答案