En el post
anterior se vio como mostrar el contenido de una tabla de la base de datos en
un JTable de la aplicación java.
Se puede
aprovechar esta idea de forma que todas las operaciones que realicemos sobre
una tabla se vean inmediatamente reflejadas en el JTable de la aplicación java.
Por ejemplo, si
eliminamos un registro sería interesante que automáticamente viéramos la tabla
actualizada en el JTable.
En esta publicación
se mejorará la aplicación de la publicación anterior, dotándola de opciones
para la gestión de la tabla Trabajadores.
EJERCICIO GUIADO Nº 1
- Abrir la aplicación de la publicación
anterior.
- El primer objetivo será hacer que al ejecutar
el programa aparezca automáticamente el contenido de la tabla Trabajadores en el JTable. Para ello, realice los
siguientes cambios en el código del programa:
- Crea el método mostrarTodosLosTrabajadores:
- Copia en el método anterior el código del
evento actionPerformed
del botón btnVerTrabajadores:
- Lo que produce esta modificación del código es
que al ejecutarse el programa se ejecute el método mostrarTodosLosTrabajadores con lo que se ejecutará el
código que hicimos en la publicación anterior para mostrar los datos de la
tabla Trabajadores en el JTable.
Ejecuta el programa y comprueba el resultado.
- Puesto que la tabla Trabajadores se
muestra al empezar el programa, la existencia del botón Ver Trabajadores no
tiene sentido, así pues elimina el botón Ver Trabajadores de la ventana.
- Añade ahora en la parte inferior un panel
llamado panelAcciones
y un botón Eliminar
Trabajador llamado btnEliminarTrabajador:
- Se pretende que el usuario seleccione uno de
los trabajadores de la tabla y al pulsar el botón Eliminar Trabajador se elimine de la base de datos.
Esta eliminación por supuesto se verá reflejada en el JTable.
Para ello, programe en el botón Eliminar
Trabajador lo siguiente:
Analicemos
con detenimiento el código programado:
Lo primero que
se hace es recoger la fila seleccionada de la tabla usando el método getSelectedRow. Si el valor
devuelto es –1 entonces es que no hay ninguna fila seleccionada. El programa
avisa de esta circunstancia.
Si se seleccionó
a un trabajador, entonces podemos borrarlo. Pero antes, es interesante pedir
confirmación. Esto es lo que se hace con el JOptionPane.showConfirmDialog.
Si el usuario
acepta la eliminación del trabajador, entonces la llevamos a cabo. Observa el
proceso:
-
Extraemos del modelo del JTable el dni
del trabajador seleccionado, este dni se encuentra en la fila seleccionada (filaSel)
y en la primera columna (columna 0):
detamo = (DefaultTableModel)
tablaTrabajadores.getModel();
dni = (String)
detamo.getValueAt(filaSel, 0);
-
Ahora se construirá una instrucción de acción SQL
del tipo DELETE para que se elimine el trabajador con el dni extraído. Esto se
hace concatenando y ejecutando la instrucción SQL a través del objeto sentencia:
sentencia.executeUpdate("DELETE
FROM Trabajadores WHERE dni = '" + dni + "'");
-
Y finalmente se llama al procedimiento mostrarTodosLosTrabajadores para
que se extraiga de la base de datos y muestre de nuevo la tabla Trabajadores. Esto actualizará
el JTable, y se podrá ver que el trabajador ha sido eliminado.
-
Todo esto está dentro de un try...catch para
capturar errores inesperados.
- Ejecuta el programa y prueba a eliminar algún
trabajador. Observa como el JTable se actualiza cuando se produce la
eliminación.
- Ahora añade otro botón llamado btnNuevoTrabajador:
- Cuando se pulse el botón Nuevo Trabajador se pretende que aparezca un
formulario donde se puedan introducir los datos de un nuevo trabajador.
Esto se conseguirá añadiendo un cuadro de diálogo a nuestro proyecto. Para
ello, agrega un JDialog al proyecto. Este
diálogo se llamará dialogoNuevoTrabajador.
- Haga doble clic en el Inspector sobre el dialogoNuevoTrabajador para diseñarlo. Debe
quedar como sigue, con los nombres que se indican a continuación:
- La idea es la siguiente. Cuando el usuario
pulse el botón Nuevo Trabajador
de la Ventana Principal aparecerá este cuadro de diálogo. El usuario
introducirá los datos del nuevo trabajador y pulsará Aceptar, y entonces
estos datos se introducirán en la tabla Trabajadores.
Si el usuario pulsa Cancelar, entonces no se hará nada.
El JTable se actualizará para mostrar el resultado de la inserción
del nuevo trabajador.
Así pues, entre en el evento actionPerformed
del botón btnNuevoTrabajador
y programe lo siguiente:
Este código empieza asignando un
tamaño al cuadro de diálogo dialogoNuevoTrabajador.
Luego, se define al dialogoNuevoTrabajador
como Modal. Esto significa que hasta que no se termine de trabajar
con este cuadro de diálogo no se podrá continuar usando el programa principal.
Luego se muestra dicho cuadro de diálogo.
Y finalmente se actualiza el JTable por si se hubiera introducido un
nuevo trabajador.
- Ahora programaremos los botones del cuadro de
diálogo dialogoNuevoTrabajador.
Empecemos por el botón Cancelar:
Como ves, sólo
se descarga el cuadro de diálogo. El botón Cancelar
se limita a quitar de la pantalla el cuadro de diálogo dialogoNuevoTrabajador.
- Y finalmente se programará el botón Aceptar del cuadro de
diálogo. Recuerda que este botón es el que introduce en la base de datos a
un nuevo trabajador. Programa dentro de este botón lo siguiente:
Vamos a analizar
detenidamente este código:
Lo primero que
puedes observar es un conjunto de líneas que copian el contenido de los cuadros
de texto en variables de cadena. Configuramos la fecha en el formato que
entiende SQL: día/mes/año.
Luego, con estas
variables, se construye por concatenación una instrucción SQL de tipo INSERT
que permita introducir los datos del nuevo trabajador en la tabla Trabajadores.
Se ejecuta dicha
instrucción SQL. Y se cierra el cuadro de diálogo.
Por supuesto, es
necesario un try...catch para evitar problemas inesperados.
- Ejecuta el programa y prueba a introducir
nuevos trabajadores.
- Nuestro programa ya puede hacer altas
y bajas. Solo queda que pueda realizar modificaciones. Para
ello añade un nuevo botón a la ventana, llamado btnModificarTrabajador:
- Se pretende que el usuario seleccione en la
tabla el trabajador cuyos datos quiere modificar, y luego pulse este botón
para efectuar la modificación.
Al pulsar este botón debe aparecer un cuadro de diálogo donde el usuario
pueda cambiar fácilmente los datos.
Ese cuadro de diálogo será muy parecido al que hemos hecho antes, así
que básicamente solo tendrás que hacer una copia de dicho cuadro de diálogo y
modificarlo un poco. A continuación se explica como hacerlo.
- Haz clic derecho sobre el cuadro de diálogo dialogoNuevoTrabajador y
activa Copiar :
- Luego activa Pegar sobre Otros
Componentes:
- Aparecerá un nuevo cuadro de diálogo que es
una copia del anterior. Este cuadro tendrá como nombre dialogoNuevoTrabajador1.
- Sin embargo, le cambiaremos el nombre para que
sea más acorde con su función. Le llamaremos dialogoModificarTrabajador. Cámbiale el nombre:
- Vamos a modificar un poco el diseño del dialogoModificarTrabajador.
Haz doble clic sobre él y empieza cambiando el título, ahora es “Modificar
Trabajador:” luego cambia los nombres de los cuadros de texto y de los
botones como se indica:
- Empezaremos programando el botón Modificar Trabajador. Al
pulsar este botón se debe mostrar el cuadro de diálogo anterior relleno
con los datos del trabajador que se quiere modificar. Se supone que el
usuario ha seleccionado a este trabajador en la tabla anterior.
Entra en el evento actionPerformed
del botón Modificar Trabajador
y programa lo siguiente:
Estudiemos
el código:
Primero se
comprueba el número de la fila seleccionada. Si no hubiera ninguna se muestra
un mensaje de error, ya que es necesario seleccionar la fila del trabajador que
se quiere modificar.
En el caso de
que haya una fila seleccionada, se extraen los datos del modelo del JTable y se
almacenan en varias variables de cadena.
Una vez hecho
esto, esas mismas variables se asignan los cuadros de texto del cuadro de
diálogo dialogoModificarTrabajador.
Y finalmente se
prepara el cuadro de diálogo dialogoModificarTrabajador
y se muestra en la pantalla. Una vez realizada la modificación (no programada
aún) se muestran los trabajadores en la tabla llamando al método mostrarTodosLosTrabajadores.
- Puedes comprobar el funcionamiento del
programa. Prueba a seleccionar una fila de la tabla y a pulsar el botón Modificar Trabajador.
- Lo bueno que tiene el rellenar el cuadro de
diálogo dialogoModificarTrabajador
con los datos del trabajador que se quiere modificar es que no tenemos
que escribir todos los datos, y solo modificar el campo que nos interese.
El usuario realizará los cambios en los cuadros de texto ya rellenos y
luego pulsará el botón Aceptar
para que se produzca la modificación.
Si se pulsa Cancelar
no sucede nada. Simplemente se cerrará el cuadro de diálogo.
- Se empezará programando el botón Cancelar. Este botón debe
limitarse a cerrar el cuadro de diálogo dialogoModificarTrabajador:
- Ahora nos centraremos en el botón Aceptar. Este botón debe
realizar la modificación, introduciendo todos los datos de los cuadros de
texto en la tabla trabajadores.
El código siguiente tomará como referencia el DNI del trabajador que se
está modificando. Es importante que este DNI no cambie, ya que entonces
estaríamos modificando los datos de otro trabajador.
Esta es la razón por la que el cuadro de texto txtModifDni se ha configurado como no editable, para evitar que el usuario pueda cambiarlo accidentalmente.
Programa el siguiente código en el botón Aceptar:
Estudiemos el código:
Lo primero que se hace es recoger en variables los datos introducidos en
los cuadros de texto.
Luego, con estas variables, se construye una instrucción SQL del tipo
UPDATE que permite modificar los datos del trabajador con el dni
indicado en el cuadro de diálogo.
Finalmente se cierra el cuadro de diálogo.
Todo este código es susceptible de sufrir fallos, para evitar esto se le
rodea de un try...catch.
- Ejecuta el programa y comprueba el
funcionamiento de la actualización de trabajadores. Prueba a realizar
varias actualizaciones. Observa como el JTable se actualiza con las nuevas
modificaciones realizadas.
CONCLUSIONES:
La más simple de las aplicaciones de base de datos
debe ser capaz de realizar las siguientes operaciones sobre una tabla:
-
Altas.
-
Bajas.
-
Modificaciones.
Es muy interesante que la aplicación muestre en
pantalla continuamente un JTable con el contenido de la tabla de la base de
datos sobre la que se está trabajando.
El JTable nos permite visualizar los datos de la
tabla y seleccionar rápidamente el registro que queramos manipular.
Para la inserción de nuevos registros en la tabla
se recomienda la creación de un cuadro de diálogo que muestre un formulario
donde el usuario pueda introducir los datos del nuevo registro cómodamente.
Para la modificación de un registro, se recomienda
la creación de otro cuadro de diálogo que muestre los datos del registro que se
quiere modificar.
No hay comentarios.:
Publicar un comentario