1. Idea general
Esto va a ser fácil: borrar y modificar se hacen igual que insertar: creas la sentencia preparada con SQL, enlazas los parámetros y la ejecutas.
RECUERDA: Para modificar una tupla de la base de datos necesitas conocer su identificador. Sin el filtro de la cláusula WHERE la operación se realizaría sobre TODAS las tuplas. No te olvides el WHERE en el DELETE FROM. (ni en el UPDATE)
2. Ejemplo
Escribe el código
Programamos una prueba de concepto para realizar las operaciones.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
public class BorrarModificarAutor {
public static void main(String[] args) {
//1. Establecemos la URL de conexión con la base de datos
String url = "jdbc:sqlite:autores.sqlite";
//2. Definimos las sentencia SQL que queremos ejecutar.
String sqlActualizar = "UPDATE Autor SET nombre = ?, nacionalidad = ? WHERE id = ?";
String sqlEliminar = "DELETE FROM Autor WHERE id = ?";
//3. Intentamos realizar la conexión en un "try con recursos"
// En el mismo try, creamos las sentencias.
try (Connection conexion = DriverManager.getConnection(url);
Statement sentencia = conexion.createStatement()) {
//4. Establecemos el valor de los datos a insertar
Integer[] ids = {1, 2}; //Asegúrate de tener estos ids en la tabla de Autores
String[] nombres = {"Isaac Asimov", "J.R. Tolikien"};
String[] nacionalidades = {"Estadounidense", "Británica"};
//5. Intentamos preparar la sentencia.
try (PreparedStatement ps = conexion.prepareStatement(sqlActualizar)) {
//6. Asociamos los datos a los parámetros de la sentencia preparada
for (int i = 0; i < ids.length; i++){
ps.setString(1, nombres[i]);
ps.setString(2, nacionalidades[i]);
ps.setInt(3, ids[i]);
//7. Ejecutamos la sentencia preparada
ps.executeUpdate();
System.out.println("Autor modificado correctamente.");
}
}
//8. Intentamos preparar la sentencia de borrado.
try (PreparedStatement ps = conexion.prepareStatement(sqlEliminar)) {
//6. Asociamos los datos a los parámetros de la sentencia preparada
for (int i = 0; i < ids.length; i++){
ps.setInt(1, ids[i]);
//7. Ejecutamos la sentencia preparada
ps.executeUpdate();
System.out.println("Autor eliminado correctamente.");
}
}
} catch (SQLException e) {
System.err.println("Error en la operación de base de datos:");
System.err.println(e.getMessage());
}
}
}
Compila y Ejecuta
Ya sabes cómo... ¿no?
Debes ver en la consola los mensajes "Autor modificado correctamente." y "Autor eliminado correctamente" dos veces cada uno.
Compruébalo
Vuelve a insertar los autores y asegúrate de que tienen los identificadores del programa (o cámbialos en el programa). Luego comenta en el código las sentencias de borrado. Ejecuta el programa y comprueba que los autores se han modificado. Por último, descomenta las sentencias de borrado. Vuelve a compilar y ejecutar y comprueba que se han eliminado los autores.