miércoles, 7 de septiembre de 2016

049.- Base De Datos - MODIFICACIONES - Java Y NetBeans

Consultas de Acción (Modificaciones):

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.

  1. Ejecuta el IDE NetBeans. Abre el proyecto llamado MantenimientoTrabajadores que se programó en el post anterior.

  1. Modifica la ventana principal añadiendo un nuevo panel con los siguientes componentes:





  1. 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.


  1. 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.


  1. Ejecuta el programa y comprueba su funcionamiento. Escribe un DNI en el cuadro del DNI de búsqueda y pulsa Buscar.



  1. 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.

  1. 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.


  1. 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