Esta interfaz hereda de Statement, y nos dará mucha más funcionalidad respecto del objeto anterior. Este objeto nos ofrecerá más flexibilidad, permitiendo pasarle dinámicamente argumentos al objeto. Podremos usar todas las sentencias mencionadas anteriormente, igual que en el objeto Statement.
PreparedStatement pstmt = null;
try {
Estudiante estudiante = new Estudiante();
String SQL = "select from Estudiante where id=? And apellido
= ?";
pstmt = conn.prepareStatement(SQL);
pstmt.setInt(1, estudiante.getId());
pstmt.setString(2, estudiante.getApellido());
//continuación de código
}catch (SQLException e) {
//continuación de código
}
finally {
pstmt.close();
En JDBC, los parámetros que vemos en la sentencia SQL están representados por un símbolo de interrogación, conocido como marcador de parámetro. Tendremos que proporcionar valores para cada parámetro antes de ejecutar la consulta.
Estos valores los podremos asignar con los datos de nuestro objeto Java, en este caso, el objeto "Estudiante" con los getters getId() y getApellido(), que recogerán el valor de este atributo y nos servirán para asignárselo de manera dinámica. Si no se asignan los argumentos, se lanzará una excepción de tipo SQLException.
Este tipo de objeto también dispone de los mismos métodos que el objeto que hemos visto en el apartado anterior, pero, como diferencia, a estos métodos podemos pasarles parámetros.
- execute(String sql): se usa para ejecutar consultas dinámicas SQL.
- executeUpdate(String sql): se usa cuando hacemos insert, delete o update.
- executeQuery(String sql): se usa para realizar select.
Si nos fijamos, al final del ejemplo también tenemos un close() para este tipo de objetos, ya que no es diferente de lo mencionado anteriormente. Siempre que abramos un objeto para interactuar con una BBDD, tendremos que cerrarlo al final de su uso.