mysql如何避免特殊字符查询_如何避免MySQL中的特殊字符?

我已经用Java开发了自己的MySQL转义方法(如果对任何人都有用的话)。

请参阅下面的类代码。

警告:如果启用了任何_反斜杠_转义SQL模式,则出错。private static final HashMap sqlTokens;private static Pattern sqlTokenPattern;static{

//MySQL escape sequences: http://dev.mysql.com/doc/refman/5.1/en/string-syntax.html

String[][] search_regex_replacement = new String[][]

{

//search string     search regex        sql replacement regex

{   "\u0000"    ,       "\\x00"     ,       "\\\\0"     },

{   "'"         ,       "'"         ,       "\\\\'"     },

{   "\""        ,       "\""        ,       "\\\\\""    },

{   "\b"        ,       "\\x08"     ,       "\\\\b"     },

{   "\n"        ,       "\\n"       ,       "\\\\n"     },

{   "\r"        ,       "\\r"       ,       "\\\\r"     },

{   "\t"        ,       "\\t"       ,       "\\\\t"     },

{   "\u001A"    ,       "\\x1A"     ,       "\\\\Z"     },

{   "\\"        ,       "\\\\"      ,       "\\\\\\\\"  }

};

sqlTokens = new HashMap();

String patternStr = "";

for (String[] srr : search_regex_replacement)

{

sqlTokens.put(srr[0], srr[2]);

patternStr += (patternStr.isEmpty() ? "" : "|") + srr[1];

}

sqlTokenPattern = Pattern.compile('(' + patternStr + ')');}public static String escape(String s){

Matcher matcher = sqlTokenPattern.matcher(s);

StringBuffer sb = new StringBuffer();

while(matcher.find())

{

matcher.appendReplacement(sb, sqlTokens.get(matcher.group(1)));

}

matcher.appendTail(sb);

return sb.toString();}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值