关键词

JDBC PreparedStatement Like参数报错解决方案

JDBC PreparedStatement Like参数报错通常是因为在使用PreparedStatement对象时,传入的使用了%_等特殊字符的参数没有被正确地转义,导致SQL语句解析异常。下面是解决该问题的完整攻略:

1. 使用转义字符

为了正确地处理参数中的特殊字符,我们需要在传入参数时使用转义符,在%_字符前添加\\,使用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语句解析异常。

2. 使用ESCAPE关键字

除了使用转义符,还可以使用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

展开阅读全文