在java中如何使用prepareStatement预编译模糊查询!

在Java中使用PreparedStatement预编译语句时,占位符 `?` 不适用于模糊查询中的通配符 `%`。占位符只能用于替换具体的值,而不能用于替换SQL语句中的其他结构,如通配符或标识符。

如果你想进行模糊查询,可以将通配符 `%` 直接添加到查询字符串中,而不是使用占位符。

正确的做法是将通配符 `%` 放在查询字符串中,并将要查询的部分作为参数传递给PreparedStatement的setString()方法。以下是正确的写法:

```java

String usernameToSearch = "John"; // 你要查询的用户名
String sqlQuery = "SELECT * FROM user WHERE username LIKE ?"; // 注意,这里不包含 % 符号

try (Connection connection = DriverManager.getConnection("jdbc:your_database_url", "username", "password");
     PreparedStatement preparedStatement = connection.prepareStatement(sqlQuery)) {

    // 注意:这里将 % 符号添加到参数值中,而不是在SQL语句中使用占位符
    preparedStatement.setString(1, "%" + usernameToSearch + "%");

    // 执行查询并处理结果
    // ...
} catch (SQLException e) {
    e.printStackTrace();
}

这样,`PreparedStatement` 就会正确处理模糊查询,将 `%` 符号与参数值连接起来,以进行预期的查询操作。

猜你喜欢

转载自blog.csdn.net/qq_58647634/article/details/132045169