Las consultas
SQL de acción son:
-
INSERT INTO (permiten introducir nuevos registros
en las tablas).
-
DELETE (permiten eliminar registros de las tablas).
-
UPDATE (permiten modificar los registros de las
tablas).
Estas consultas
SQL se ejecutan desde el programa a través del método executeUpdate propio del objeto sentencia.
Estas
instrucciones SQL afectan al contenido de las tablas de la base de datos y no
devuelven ningún resultado. Es decir, no extraen datos, y por tanto no
devuelven un ResultSet.
En las publicaciones
anteriores se ha visto como ejecutar consultas INSERT INTO y DELETE. En esta
hoja guiada veremos como ejecutar consultas de acción de modificación: UPDATE.
EJERCICIO GUIADO Nº 1
PLANTEAMIENTO:
Se mejorará el
proyecto realizado en la entrada anterior de forma que no solo permita añadir y
borrar trabajadores de la tabla Trabajadores
de la base de datos AMANUVA, sino que también permita realizar
modificaciones en los datos de los trabajadores de dicha tabla.
- Ejecuta el IDE NetBeans. Abre el proyecto
llamado MantenimientoTrabajadores que se programó en
el post anterior.
- Modifica la ventana principal añadiendo un
nuevo panel con los siguientes componentes:
- La mejora que se pretende hacer es la siguiente:
-
El usuario introducirá en el cuadro de texto txtModDni el DNI del
trabajador cuyos datos se quieren modificar.
-
Al pulsar el botón Buscar, el resto de cuadros de texto se rellenarán con los
datos del trabajador al que pertenece dicho DNI. (Si dicho DNI no existiera, se
mostraría un mensaje de error).
-
Cuando aparezcan los datos del trabajador en los
cuadros de texto, el usuario podrá realizar las modificaciones pertinentes.
-
Al pulsar el botón Modificar se modificarán los datos en la tabla.
- Primero programaremos el botón de búsqueda.
Entre en el evento actionPerformed
de este botón y programe lo siguiente:
Estudiemos
atentamente el código anterior:
Lo primero que
hace el código es construir una consulta de selección que busque a todos los
trabajadores que tengan el DNI introducido en el cuadro de texto txtModDni.
Ejecuta la
consulta y almacena el resultado en un típico ResultSet. Luego comprueba a través del siguiente if
si no existe un trabajador con dicho DNI en el ResultSet:
if (!rs.first()) {
En ese caso
muestra un mensaje de error indicando que no se ha encontrado dicho trabajador.
En caso
contrario muestra los datos del trabajador encontrado en los cuadros de texto.
Para ello, se extrae del ResultSet
cada campo y se coloca en el cuadro de texto correspondiente. Por ejemplo:
txtModNombres.setText(rs.getString("nombres"));
Recoge el valor
del campo nombres, y lo sitúa
en el cuadro de texto txtModNombres.
En el caso de la
fecha de entrada del trabajador, se extrae la fecha y luego se extrae de la
cadena el día, el mes y el año, situando cada dato en su cuadro de texto
correspondiente.
fecha =
rs.getString("fecha_entrada");
dia =
fecha.substring(8, 10);
mes =
fecha.substring(5, 7);
anio =
fecha.substring(0, 4);
txtModDia.setText(dia);
txtModMes.setText(mes);
txtModAnio.setText(anio);
Recuerda que
cuando se extrae una fecha de un ResultSet, su
formato es:
año-mes-dia-hora:minutos
Por ejemplo: 2016-09-07-00:00
Así pues, si el
DNI introducido pertenece a uno de los trabajadores de la tabla, sus datos
aparecerán en los cuadros de texto cuando se pulse el botón Buscar.
- Ejecuta el programa y comprueba su
funcionamiento. Escribe un DNI en el cuadro del DNI de búsqueda y pulsa Buscar.
- Se supone que cuando aparezcan los datos del
trabajador en los cuadros de texto el usuario los modificará según le
interese. Luego, al pulsar el botón Modificar
los nuevos datos serán actualizados en la tabla.
- Para hacer esto, entre en el evento actionPerformed del botón Modificar y programe
lo siguiente:
Se va a
analizar este código. Estúdielo con detenimiento:
Debe observar
que lo primero que se hace en este código es crear una consulta de
actualización (UPDATE) a través de una concatenación de cadenas.
Si observa la
concatenación, verá que el resultado es una instrucción SQL de tipo UPDATE en
la que los datos que se actualizan son precisamente los datos introducidos en
los cuadros de texto del panel de modificación.
Por ejemplo, si estos
fueran los valores de los cuadros de texto del panel de modificación:
txtModDni 55555555
txtModNombres JUANA
txtModApellidos CASTRO
txtModSueldo 6000.00
txtModDia 16
txtModMes 12
txtModAnio 2015
txtModPlaca P0005
La instrucción ya
construida por concatenación sería la siguiente:
UPDATE Trabajadores
SET nombres = 'JUANA',apellidos = 'CASTRO',sueldo =
6000.00,fecha_entrada = '16/12/2015',placa = 'P0005'
WHERE dni = '55555555'
Esta instrucción
SQL de tipo UPDATE incluye una cláusula WHERE con una condición de forma que
solo se modifica aquel trabajador que tenga el DNI introducido en el cuadro de
texto txtModDni.
Una vez
construida la consulta UPDATE, esta se ejecuta usando el objeto sentencia y luego se muestra el
contenido de la tabla Trabajadores en el panel a través de
una llamada al método mostrarTodosLosTrabajadores.
Todo este código
está rodeado de un try...catch para evitar errores inesperados.
- Comprueba el funcionamiento del programa
ejecutándolo. Debes introducir un DNI y pulsar el botón Buscar para que se rellenen
los cuadros de texto con los datos del trabajador.
Luego cambia algún dato de los que han aparecido en los cuadros de texto
y pulsa el botón Modificar.
Si observas el panel de texto deberá aparecer la lista completa de trabajadores
y en ella podrás observar la modificación que se ha realizado en el trabajador
correspondiente.
CONCLUSIONES:
Se pueden ejecutar instrucciones SQL del tipo
UPDATE (modificar registros) usando el objeto sentencia.
Para este tipo de instrucciones hay que usar el
método executeUpdate.
Normalmente, será necesario construir una cadena de
consulta UPDATE a través de la concatenación de subcadenas y datos introducidos
por el usuario en cuadros de texto.
Este tipo de instrucción SQL no devuelve ningún ResultSet,
ya que no extraen datos de las tablas, sino que modifican el contenido de
éstas.
Es una buena idea dar alguna opción de búsqueda que
permita encontrar al registro a modificar y que sus datos aparezcan en varios
cuadros de texto, de forma que el usuario tenga más facilidad a la hora de
realizar la modificación de los datos.
No hay comentarios.:
Publicar un comentario