Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

Consulta de Update

Buenas, queria realizar una consulta con el Update, carga la actualización en el JOptionPane con las filas actualizadas y se ve en la pantalla que las carga pero, al refrescar la vista vuelve sin la modificación.

2 respuestas

Hola Lionel, espero que estés bien.

La instrucción UPDATE hace que los cambios se aplican directamente en la base de datos, pero es posible que no veas porque la vista no se está refrescando adecuadamente para mostrar los datos actualizados.

Puedes verificar el flujo de control, por ejemplo, si estás mostrando la vista antes de realizar la actualización, los cambios no serán visibles hasta que vuelvas a cargar la vista después de la actualización.

O verifica el alcance de la transacción para obtener los datos y mostrar la vista. Si la actualización se realiza en una transacción separada, los cambios pueden no ser visibles para la vista hasta que la transacción se confirme y los datos se actualicen.

Recuerda que si tienes más duda sobre el contenido, estaremos aquí para ayudarte. ¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Hola Lionel, parece tuvimos un problema similar.

Los cambios se logran realizar si das click 2 veces o si realizas el la corrección, click fuera de la fila y luego click en modificar también funciona, pero creo que ese no es el caso.

Pues resulta que investigando un poco me di cuenta que se podría tratar de un "Error" o algo no previsto en la forma en que la interfaz interactúa con la tabla en MySQL y cómo maneja los eventos.

Al continuar con la búsqueda de esta situación y la vez haciendo uso de I.A., esta me sugiere que "...Este comportamiento es que el evento de edición de celda en la tabla podría no estar disparándose de inmediato al realizar una modificación. En muchos entornos gráficos, los cambios en una celda no se reflejarán en el modelo de datos subyacentes hasta que la edición de la celda se complete o se salga de la celda editada.

Cuando se hace clic fuera de la celda editada, es posible que se desencadene el evento de finalización de edición, lo que actualiza el modelo de datos de la tabla con el nuevo valor editado. Luego, cuando presiones el botón de modificar, estás leyendo los datos actualizados del modelo y realizando la modificación en la base de datos..."

Aunado a lo anterior, me realizo una sugerencia, la cual te comparto:

"...Para mejorar esta experiencia y evitar la necesidad de hacer clic fuera de la fila modificada antes de presionar el botón de modificar, puede intentar forzar la finalización de la edición de la celda cuando se presione el botón de modificar. Limpie esto llamando al método table.getCellEditor().stopCellEditing()antes de realizar la modificación en la base de datos. Esto asegurará que cualquier cambio en la celda se aplique antes de que se realice la modificación en la base de datos..."

Aquí hay un ejemplo de cómo podría incluir este llamado:

private void modificar() {
    if (tieneFilaElegida()) {
        JOptionPane.showMessageDialog(this, "Por favor, elije un item");
        return;
    }

    if (tabla.isEditing()) {
        tabla.getCellEditor().stopCellEditing();
    }

    Optional.ofNullable(modelo.getValueAt(tabla.getSelectedRow(), tabla.getSelectedColumn()))
            .ifPresentOrElse(fila -> {
                // Resto del código de modificación
                // ...
            }, () -> JOptionPane.showMessageDialog(this, "Por favor, elije un item"));
}

O EN ESTE ENLACE COMPARTÍ UN POCO MAS DE INFORMACIÓN, SOLO COPIA Y PEGA EL LINK DESDE OTRA VENTANA

https://app.aluracursos.com/forum/topico-sugerencia-como-resolver-que-la-tabla-en-la-b-d-mysql-guarde-los-cambios-219869