Compartilhar via


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