Empleo de una instrucción SQL con parámetros

Descargar controlador JDBC

Para trabajar con los datos de una base de datos de SQL Server con una instrucción SQL que contiene parámetros IN, puede usar el método executeQuery de la clase SQLServerPreparedStatement para devolver SQLServerResultSet, que contiene los datos solicitados. Para ello, primero debe crear un objeto SQLServerPreparedStatement mediante el método prepareStatement de la clase SQLServerConnection.

Al generar la instrucción SQL, los parámetros IN se especifican mediante el carácter ? (signo de interrogación), que actúa como un marcador de posición para los valores de parámetros que se van a pasar a la instrucción SQL. Para especificar un valor de un parámetro, puede usar uno de los métodos del establecedor de la clase SQLServerPreparedStatement. El método de establecedor usado se determina mediante el tipo de datos del valor que desea pasar a la instrucción SQL.

Al pasar un valor al método de establecedor, debe especificar no sólo el valor real que se va a usar en la instrucción SQL, sino también la posición ordinal del parámetro en la instrucción SQL. Por ejemplo, si la instrucción SQL contiene un solo parámetro, su valor ordinal será 1. Si la instrucción contiene dos parámetros, el primer valor ordinal es 1 y el segundo 2.

En el siguiente ejemplo, se pasa una conexión abierta a la base de datos de ejemplo de AdventureWorks2022 a la función, se genera una instrucción SQL preparada y se ejecuta con un solo valor de parámetro String y, luego, se leen los resultados del 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();
    }
}

Vea también

Empleo de instrucciones con SQL