Método delete en JDBC con PreparedStatement

Resumen

Implementar el método delete en JDBC cierra el ciclo del CRUD y te permite eliminar registros directamente desde tu aplicación Java hacia MySQL. Aquí terminas de conectar tu repositorio con la base de datos usando PreparedStatement y validas que tu lógica de guardar (insert vs update) funcione según el id recibido.

¿Cómo diferencia el método guardar entre insert y update?

La lógica del método guardar se apoya en un condicional if que evalúa el id del empleado. Si el id contiene un valor numérico mayor a cero, el PreparedStatement ejecuta una sentencia update; si no existe id, ejecuta un insert. Así, un solo método cubre dos operaciones distintas según el estado del objeto [00:25].

Para probarlo en el main, basta con llamar a employee.setId(6) antes de pasarlo al repositorio. Cambias, por ejemplo, el apellido de Diego Pimentel Gutiérrez a Diego Pimentel Villanueva y ajustas el salario. Al ejecutar, la primera lista muestra el registro original y, tras la actualización, aparece el cambio reflejado tanto en consola como en la tabla de MySQL [01:25].

¿Cuándo se hace un update y cuándo un insert en JDBC? Cuando el objeto tiene un id válido (mayor a cero), se hace update. Cuando el id está vacío o en cero, se hace insert. Un solo método guardar resuelve ambos casos.

¿Cómo se implementa el método delete con PreparedStatement?

El método delete vive dentro de EmployeeRepository y sigue la misma estructura que los anteriores: un bloque try, una conexión, un PreparedStatement y la captura de excepciones SQL [02:10].

La sentencia SQL es directa:

java try { PreparedStatement myStmt = getConnection() .prepareStatement("DELETE FROM employees WHERE id = ?"); myStmt.setInt(1, id); myStmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); }

Fíjate en tres detalles que hacen funcionar este método:

  • El placeholder ? en la sentencia SQL evita inyecciones y permite enlazar el id de forma segura.
  • setInt asigna el valor entero del id a ese placeholder.
  • executeUpdate se usa porque estás modificando datos en la base, no consultándolos.

¿Por qué se usa executeUpdate y no executeQuery al borrar? Porque executeUpdate se utiliza para sentencias que modifican la base de datos (insert, update, delete), mientras que executeQuery solo sirve para select que devuelve resultados.

¿Cómo probar el delete desde el main?

En la clase principal cambias el mensaje a empleado eliminado y llamas a repository.delete(6), usando el mismo id que insertaste y actualizaste antes. Luego vuelves a listar los empleados para confirmar el cambio [03:05].

El resultado esperado:

  1. La primera lista muestra al empleado con id 6.
  2. Tras llamar al delete, la segunda lista ya no lo incluye.
  3. Al ejecutar un select desde MySQL Workbench, el registro tampoco aparece en la tabla.

Con esa verificación cruzada (consola + base de datos) confirmas que la operación impactó realmente al motor y no solo a la vista en Java.

¿Qué cierra esta implementación del CRUD en Java?

Con el delete listo, ya tienes los cuatro métodos del CRUD funcionando: lectura por id, inserción, actualización y eliminación. Todos están declarados en la interfaz y desarrollados en la clase EmployeeRepository, lo que mantiene tu código desacoplado y fácil de mantener.

Una buena práctica para reforzar el aprendizaje es presentar estos métodos como si se los explicaras a un reclutador desde el main. Te recomiendo:

  • Hacer al menos tres inserciones distintas para poblar la tabla.
  • Ejecutar dos actualizaciones cambiando campos como salario o apellido.
  • Eliminar un par de registros y volver a listar para evidenciar el cambio.

Este ejercicio te prepara para la siguiente etapa, donde dejas la terminal y pasas a una interfaz visual para interactuar con la base de datos. ¿Cómo le mostrarías tú estos cuatro métodos a un reclutador? Déjamelo en los comentarios.