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

a36ff5496591a0447de50d3f6d05f792.png

慕的地10843

我已经用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、付费专栏及课程。

余额充值