Uso de una instrucción SQL con parámetros
Para trabajar con datos en una base de datos de SQL Server mediante una instrucción SQL que contiene parámetros IN, puede usar el método executeQuery de la clase SQLServerPreparedStatement para devolver un SQLServerResultSet que contendrá 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 ejemplo siguiente, se pasa una conexión abierta a la base de datos de ejemplo AdventureWorks2022 a la función , se construye y ejecuta una instrucción preparada de SQL con un único valor de parámetro String y, a continuación, 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();
}
}