Como usar uma instrução SQL com parâmetros

Baixar Driver JDBC

Para trabalhar com os dados em um banco de dados do SQL Server usando uma instrução SQL contendo parâmetros IN, é possível usar o método executeQuery da classe SQLServerPreparedStatement para retornar um SQLServerResultSet que contenha 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 é passado para a função, uma instrução SQL preparada é criada e executada com um único valor de parâmetro de cadeia de caracteres 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();
    }
}

Confira também

Como usar instruções com SQL