Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

[Bug] Varias dudas

La primera es como se cierra la conexión. Ya que no puedo cerrar la conexión antes de realizar el return porque me tirra error. (Abajo de todo esta el código) El instructor no cerró la conexión en el método eliminar y también me tira error al querer cerrarla.

Otra duda: En el Método eliminar se escribe modelo.removeRow(tabla.getSelectedRow()); Creo yo que es para modificar en la tabla de la interfaz JSWING pero al querer modificar, que metodo se utiliza?? intente utilizar modelo.setValueAt(tabla.getSelectedRow()); pero me tira error

Por último puedo modificar la cantidad, y la descripción pero no el nombre y no tengo idea porque, pero al debaguear el valor recibido en nombre en el metodo modificar no lo actualiza. acá subo unas imagenes

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

`public int modificar(String nombre, String descripcion,Integer cantidad ,Integer id) throws SQLException { // TODO Connection con = new ConnectionFactory().recuperaConexion(); Statement statement = con.createStatement(); statement.execute("UPDATE PRODUCTO SET "

            + "NOMBRE ='"+ nombre + "'"
            + ", DESCRIPCION ='"+ descripcion +"'"
            + ",CANTIDAD ="+ cantidad+"  WHERE ID = " + id);

    //con.close();
    return statement.getUpdateCount();`
2 respuestas
solución!

¡Hola Kevin!

Para cerrar la conexión en Java, debes utilizar el método close() de la clase Connection. Para evitar el error que mencionas, puedes utilizar el bloque finally después de realizar la consulta y cerrar la conexión dentro de este bloque. Por ejemplo:

Connection con = null;
try {
    con = new ConnectionFactory().recuperaConexion();
    // Realizar la consulta
} catch (SQLException e) {
    // Manejar la excepción
} finally {
    if (con != null) {
        try {
            con.close();
        } catch (SQLException e) {
            // Manejar la excepción
        }
    }
}

Respecto a tu segunda duda, el método setValueAt() es el correcto para modificar una celda en una tabla de interfaz gráfica en Java Swing. Sin embargo, debes pasar dos parámetros al método: el valor que deseas asignar y las coordenadas de la celda que deseas modificar. Por ejemplo:

modelo.setValueAt(nuevoValor, fila, columna);

Donde nuevoValor es el valor que deseas asignar, fila es el número de fila de la celda que deseas modificar y columna es el número de columna de la celda que deseas modificar.

En cuanto a tu última duda, es posible que el valor de nombre no se esté actualizando correctamente debido a que no se está pasando el valor correcto al método modificar(). Asegúrate de que el valor de nombre que estás pasando como parámetro es el valor que deseas actualizar en la base de datos.

Espero haber ayudado y buenos estudios!

Había una mejor forma de hacerlo, lo vimos con el profe Diego en el curso de excepciones que era el try-with-resources

try (Connection con = new ConnectionFactory().recuperaConexion()) {
    // Realizar la consulta
} catch (SQLException e) {
    // Manejar la excepción
}

Obviamente tienes que implementar la interfaz AutoCloseable en la clase ConnectionFactory();