BackEnd/JDBC

[JDBC] like문 사용법

코딩마루 2023. 1. 18. 00:40

데이터베이스에서 원하는 형태의 문자열을 찾고 싶은 경우 like문을 활용할 수 있다. 이런 경우 아래와 같이 코드를 작성하면 에러가 발생한다.

 

// 생략
String sql = "SELECT * FROM users WHERE name LIKE '?'";
try (Connection connection = DriverManager.getConnection(dbUrl, dbUser, dbPasswd);
        PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
    preparedStatement.setString(1, keyword);
// 생략

이런 경우 preparedStatement에서 sql문의 ?를 인식하지 못하여 전달할 파라미터가 없다고 판단하는 것 같다. 즉, 파라미터가 없는데 우리가 preparedStatement.setString(1, keyword);에서 파라미터를 넘겨주므로 에러가 발생하는 것이다. 이런 경우 아래와 같이 코드를 작성하면 올바르게 동작한다.

// 생략
String sql = "SELECT * FROM users WHERE name LIKE ?";
try (Connection connection = DriverManager.getConnection(dbUrl, dbUser, dbPasswd);
        PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
    preparedStatement.setString(1, "%"+keyword+"%");
// 생략