매개 변수와 함께 SQL 문 사용
IN 매개 변수가 포함된 SQL 문을 사용하여 SQL Server 데이터베이스의 데이터를 사용하려면 SQLServerPreparedStatement 클래스의 executeQuery 메서드를 사용하여 요청된 데이터를 포함할 SQLServerResultSet를 반환할 수 있습니다. 이렇게 하려면 먼저 SQLServerConnection 클래스의 prepareStatement 메서드를 사용하여 SQLServerPreparedStatement 개체를 만들어야 합니다.
SQL 문을 생성할 때 IN 매개 변수는 ? (물음표) 문자를 사용하여 지정되며, 이 문자는 이후 SQL 문에 전달될 매개 변수 값의 자리 표시자 역할을 합니다. 매개 변수의 값을 지정하려면 SQLServerPreparedStatement 클래스의 setter 메서드 중 하나를 사용할 수 있습니다. 사용하는 setter 메서드는 SQL 문에 전달할 값의 데이터 형식에 따라 결정됩니다.
setter 메서드에 값을 전달할 때는 SQL 문에 사용할 실제 값뿐만 아니라 SQL 문에서의 매개 변수 서수 배치도 지정해야 합니다. 예를 들어 SQL 문에 단일 매개 변수가 포함된 경우 해당 서수 값은 1이 됩니다. 명령문에 두 개의 매개 변수가 포함된 경우 첫 번째 서수 값은 1이고 두 번째 서수 값은 2가 됩니다.
다음 예제에서는 AdventureWorks2022 샘플 데이터베이스에 대한 열린 연결이 함수에 전달되고, SQL 준비 문이 생성되고 단일 String 매개 변수 값으로 실행된 다음 결과 집합에서 결과를 읽습니다.
public static void executeStatement(Connection con) {
try(PreparedStatement pstmt = con.prepareStatement("SELECT LastName, FirstName FROM Person.Contact WHERE LastName = ?");) {
pstmt.setString(1, "Smith");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));
}
}
// Handle any errors that may have occurred.
catch (SQLException e) {
e.printStackTrace();
}
}