Usando uma instrução SQL com parâmetros
Para trabalhar com dados em um banco de dados SQL Server usando uma instrução SQL que contém parâmetros IN, você pode usar o método executeQuery da classe SQLServerPreparedStatement para retornar um SQLServerResultSet que conterá os dados solicitados. Para isso, você deve primeiro criar um objeto SQLServerPreparedStatement usando o método prepareStatement da classe SQLServerConnection.
Quando você constrói a instrução SQL, os parâmetros IN são especificados usando-se o caractere ? (ponto de interrogação), que funciona como um espaço reservado para os valores de parâmetro que, posteriormente, serão passados para a instrução SQL. Para especificar um valor para um parâmetro, você pode usar um dos métodos setter da classe SQLServerPreparedStatement. O método setter que é possível pode usar é determinado pelo tipo de valor que você deseja passar para a instrução SQL.
Ao passar um valor para o método setter, você deve especificar não somente o valor real a ser usado na instrução SQL, mas também o posicionamento ordinal do parâmetro na instrução SQL. Por exemplo, se a instrução SQL contiver um único parâmetro, seu valor ordinal será 1. Se a instrução contiver dois parâmetros, o primeiro valor ordinal será 1, e o segundo valor ordinal será 2.
No exemplo a seguir, uma conexão aberta com o banco de dados de exemplo AdventureWorks2022 é passada para a função, uma instrução preparada para SQL é construída e executada com um único valor de parâmetro String e, em seguida, os resultados são lidos do conjunto de resultados.
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();
}
}