Buenas que opinan de esta sugerencia que me dio CHATGPT. Segun indica que concatenar valores directamente en una consulta SQL puede llevar a vulnerabilidades de seguridad como ataques de inyección de SQL. Es una buena práctica utilizar consultas parametrizadas o preparadas en lugar de concatenación de cadenas para evitar estos problemas. Aca les muestro mi codigo.
public class ProductoController {
public void modificar(String nombre, String descripcion, Integer cantidad, Integer id) throws SQLException {
Connection con = new ConnectionFactory().recoverConnection();
Statement statement = con.createStatement();
//Codigo solucion original...
/*statement.execute("UPDATE PRODUCTO SET NOMBRE = '" + nombre + "', DESCRIPCION = '" + descripcion + "', CANTIDAD = " + cantidad +
" WHERE ID = " + id);*/
// lo que se tiene que hacer segun chatGPT....
String updateQuery = "UPDATE PRODUCTO SET NOMBRE = ?, DESCRIPCION = ?, CANTIDAD = ? WHERE ID = ?";
try (PreparedStatement preparedStatement = con.prepareStatement(updateQuery)) {
preparedStatement.setString(1, nombre);
preparedStatement.setString(2, descripcion);
preparedStatement.setInt(3, (cantidad));
preparedStatement.setInt(4, id);
preparedStatement.executeUpdate();
}catch (SQLException e) {
throw new RuntimeException(e);
}
}
¿Que les parece?