Operaciones CRUD sobre la BD
Preparando las operaciones
En JDBC (Java Database Connectivity), las operaciones sobre la base de datos se realizan utilizando los siguientes objetos y métodos:
- Connection, establece el canal de comunicación con el SGBD (PostgreSQL, MySQL, etc.)
- Los objetos PreparedStatement y CreateStatement se utlizan para enviar consultas SQL desde el programa a la base de datos. A continuación se muestra una tabla con el uso de cada uno:
| Si necesitas... | Usa... |
|---|---|
| Consultas sin parámetros | CreateStatement |
| Consultas con datos del usuario | PreparedStatement |
| Seguridad frente a inyecciones SQL | PreparedStatement |
| Ejecutar muchas veces con distintos valores | PreparedStatement |
| Crear tablas o sentencias SQL complejas que no cambian | CreateStatement |
- Los métodos executeQuery(), executeUpdate() y execute() se utilizan para ejecutar sentencias SQL, pero se usan en contextos diferentes. A continuación se muestra una tabla con el uso de cada uno:
| Método | Uso principal | Tipo de sentencia SQL | Resultado que devuelve |
|---|---|---|---|
| executeQuery() | Realizar consultas | SELECT |
Objeto ResultSet con el resultado de la consulta SQL. Permite recorrer fila a fila el conjunto de resultados, accediendo a cada campo por nombre o por posición |
| executeUpdate() | Realizar modificaciones | INSERT, UPDATE, DELETE, DDL (CREATE, DROP, etc.) |
Entero con el número de filas afectadas |
| execute() | No se sabe de antemano qué tipo de sentencia SQL se va a ejecutar (consulta o modificación) | Sentencias SQL que pueden devolver varios resultados | Booleano true si el resultado es un ResultSet (SELECT) y false si el resultado es un entero (INSERT, UPDATE, DELETE,CREATE, ALTER) |
Buenas Prácticas: PreparedStatement y Gestión de Recursos
- Seguridad con
PreparedStatement: Se debe utilizar siemprePreparedStatementpara ejecutar consultas con datos variables. A diferencia deStatement, precompila la sentencia SQL y trata los parámetros como datos, no como código ejecutable, previniendo así ataques de Inyección SQL. - Gestión de Recursos con
.use: Es imprescindible cerrar los recursos JDBC (Connection,Statement,ResultSet). La función de extensión.usede Kotlin es la forma recomendada, ya que asegura el cierre automático del recurso.
🔍 Ejecutar y Analizar
Ejecutar y Analizar: Gestión de Recursos con y sin .use
Compara las dos siguientes funciones. Ambas hacen lo mismo, pero la versión con .use es más concisa y segura.