JDBC PreparedStatement Like参数报错通常是因为在使用PreparedStatement
对象时,传入的使用了%
和_
等特殊字符的参数没有被正确地转义,导致SQL语句解析异常。下面是解决该问题的完整攻略:
为了正确地处理参数中的特殊字符,我们需要在传入参数时使用转义符,在%
和_
字符前添加\\
,使用Java代码如下:
String keyword = "test_1%";
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM table WHERE column LIKE ?");
pstmt.setString(1, keyword.replace("_", "\\_").replace("%", "\\%"));
ResultSet rs = pstmt.executeQuery();
在这个示例中,我们使用了replace()
方法来将参数中的_
和%
字符替换为转义后的字符,从而避免了SQL语句解析异常。
除了使用转义符,还可以使用SQL语句中的ESCAPE关键字,指定一个转义字符来对参数中的特殊字符进行转义。使用Java代码示例如下:
String keyword = "test_1%";
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM table WHERE column LIKE ? ESCAPE '\\'");
pstmt.setString(1, keyword);
ResultSet rs = pstmt.executeQuery();
在这个示例中,我们在SQL语句中使用了ESCAPE关键字,指定转义字符为\
,然后直接传入参数即可,不需要进行额外的转义处理。
总之,在使用PreparedStatement
对象时,传入参数中如果包含%
和_
等特殊字符,建议使用转义符或者ESCAPE关键字来避免SQL语句解析异常。
本文链接:http://task.lmcjl.com/news/13010.html