쿼리 처리에 Prepared Statement를 사용하려고합니다. 문제는 사용자 입력을 기반으로 쿼리를 변경하는 else 문이 있으면 severals가 있다는 것입니다.복잡한 쿼리에서 Prepared Statement 사용
여기 PreparedStatement
이 경우 도움이되지 않습니다 내 코드
if( !star_firstName.isEmpty() || !star_lastName.isEmpty() ){
baseQuery = "select m.id, title, year, director, banner_url, trailer_url from movies m, stars s, stars_in_movies sim WHERE m.id=sim.movie_id AND s.id=sim.star_id";
}
if(!searchtext.isEmpty())
baseQuery = baseQuery + " AND upper(title) like '%" + searchtext.toUpperCase() + "%'" ;
if(!movie_year.isEmpty())
baseQuery = baseQuery + " AND year=" + movie_year;
if(!movie_director.isEmpty())
baseQuery = baseQuery + " AND upper(director) like '%" + movie_director.toUpperCase() + "%'";
if(!star_firstName.isEmpty())
baseQuery = baseQuery + " AND upper(first_name) like '%" + star_firstName.toUpperCase() + "%'" ;
if(!star_lastName.isEmpty())
baseQuery = baseQuery + " AND upper(last_name) like '%" + star_lastName.toUpperCase() + "%'" ;
if(!title1.isEmpty()){
baseQuery = "SELECT m.id, title, year, director, banner_url, trailer_url FROM movies m where m.title like '" + title1 + "%" + "'";
}
if( !genre.isEmpty()){
baseQuery = "SELECT m.id, title, year, director, banner_url, trailer_url FROM movies m, genres g, genres_in_movies gim where g.id=gim.genre_id and m.id = gim.movie_id and g.name='" + genre + "'";
}
System.out.println(baseQuery);
ResultSet resultSet = statement.executeQuery(baseQuery);
질문 무엇입니까? –
오, 미안해, 내 주된 질문을 잊어 버렸다. 코드 스 니펫은 작동하지만 PreparedStatement를 사용하여 성능을 최적화하려고합니다. . 내 질문에 어떻게 PreparedStatement 사용하여 동일한 결과를 얻을 수 있습니까? –