Consultas de Selección y Consultas de Acción:
Al estudiar SQL, vimos que
existían dos tipos de instrucciones.
-
Consultas de selección
(SELECT):
Estas consultas permiten
extraer datos de la base de datos. Dicho de otro modo, permiten visualizar información
de la base de datos que cumpla un criterio.
Estas consultas no afectan
a la base de datos, simplemente muestran información sobre la propia base de
datos.
-
Consultas de acción
(INSERT, DELETE, UPDATE):
Estas consultas realizan
una acción sobre la base de datos. Esta acción puede ser:
o Insertar un nuevo registro
en una tabla (INSERT).
o Borrar uno o varios
registros de una tabla (DELETE).
o Modificar los datos de uno
o varios registros de la tabla (UPDATE).
Ejecución de consultas de selección y de consultas de acción:
Hasta ahora se han
realizado programas java que ejecutaban consultas de selección sobre la base de
datos.
Recuerda que para ejecutar
estas consultas se usa el método executeQuery del objeto sentencia
y el resultado de la consulta se almacena en un objeto ResultSet:
ResultSet rs = sentencia.executeQuery(“SELECT …”);
En esta publicación de mi
blog veremos la ejecución de consultas de acción sobre la base de datos desde una
aplicación java. Este tipo de consultas se ejecutan usando el método executeUpdate
del objeto sentencia, y no devuelven un resultado, ya que simplemente
actúan sobre la base de datos modificando de alguna manera su contenido.
Así pues, para realizar un alta en la base de datos se usará:
sentencia.executeUpdate(“INSERT …”);
Para realizar una modificación en la base de datos se
usará:
sentencia.executeUpdate(“UPDATE …“);
Para realizar una eliminación en la base de datos se
usará:
sentencia.executeUpdate(“DELETE …“);
EJERCICIO GUIADO Nº 1
PLANTEAMIENTO:
Se quiere realizar una
aplicación de base de datos que manipule los datos de los trabajadores de la
base de datos AMANUVA. Esta aplicación permitirá ver el listado de trabajadores
y además permitirá introducir nuevos trabajadores.
- En el IDE NetBeans haz
lo siguiente: Crea un nuevo proyecto llamado MantenimientoTrabajadores.
Dentro de este proyecto crea un paquete principal llamado paquetePrincipal
y dentro de él agrega un JFrame llamado VentanaPrincipal:
- Añade por ahora a la
ventana un JTextPane y un botón:
El botón se llamará btnVerTrabajadores y el JTextPane se llamará panelTexto:
- Para que este programa
pueda trabajar con la base de datos AMANUVA tendrá que prepararlo haciendo
lo siguiente:
-
Añadir
al programa los objetos conexion
(Connection) y sentencia (Statement) como globales.
-
Crear
el procedimiento realizarConexionBaseDatos
y llamarlo desde el método constructor.
-
Cerrar
la conexión desde el evento windowClosing.
Realice estos tres pasos
que se han indicado antes de continuar.
- Ya se puede programar
el botón btnVerTrabajadores.
Se pretende que al pulsar este botón aparezca en el panel panelTexto el contenido de la tabla Trabajadores.
Para ello, en el evento actionPerformed del botón btnVerTrabajadores programe
lo siguiente:
- Como puede ver, es una
llamada a un método al que se le ha nombrado mostrarTodosLosTrabajadores
(aparece subrayado en rojo debido a que no se ha creado todavía). Este
método se encargará de mostrar todos los trabajadores en el panelTexto.
Programe el método mostrarTodosLosTrabajadores
de la siguiente forma:
El código de este método no
debe resultarle ya desconocido.
Básicamente lo que hace es ejecutar
una consulta SQL que recoge todos los datos de la tabla Trabajadores y luego
muestra dichos datos en el panel de la ventana.
Se muestra el listado
procurando que las fechas aparezcan con el formato día/mes/año y que si el
campo placa fuera nulo o una cadena vacía “”, entonces aparezca el texto “sin
coche”.
La razón por la que se ha
programado este código en un método aparte llamado mostrarTodosLosTrabajadores
en vez de hacerlo directamente en el evento actionPerformed del botón
se entenderá más adelante, cuando avancemos en el ejercicio guiado.
- Ejecute el programa y
pruebe el botón btnVerTrabajadores. Compruebe
que realiza su cometido.
- Ahora que ya tenemos
un programa capaz de visualizar a los trabajadores, añada los siguientes
elementos a la ventana principal:
- El objetivo de estos
elementos es el siguiente:
El usuario introducirá los
datos de un nuevo trabajador en las casillas indicadas.
Luego, al pulsar el botón
de Alta, se introducirá en la
tabla Trabajadores los datos
del nuevo trabajador y aparecerá en el panel la lista actualizada de
trabajadores incluyendo al nuevo que se ha añadido.
Para ello tendrás que
programar en el botón Alta lo
siguiente:
Analicemos este código
detenidamente.
Lo primero que hay que tener en cuenta es que se
realiza una concatenación de cadenas dentro de la variable consulta.
Observa el uso de += para concatenar. Ten en cuenta que
es lo mismo poner esto:
consulta += “’”+txtDni.getText()+”’,”;
que poner esto:
consulta = consulta + “’”+txtDni.getText()+”’,”;
Solo que el uso de += acorta las instrucciones.
Si se analiza la
concatenación de las cadenas, se observará que el resultado es una instrucción
SQL del tipo INSERT INTO. Es decir, una instrucción SQL que permite la
inserción de un nuevo registro en la tabla Trabajadores.
Por ejemplo, supongamos que
introducimos los siguientes valores en los cuadros de texto:
txtDni 88888888
txtNombres ANTERO
txtApellidos OLIVERA
txtSueldo 8080
txtDia 31
txtMes 01
txtAnio 2017
txtPlaca (vacío)
La concatenación en la
variable consulta resultaría así (en azul los valores de los cuadros de texto, en naranja las cadenas
que se concatenan):
INSERT INTO Trabajadores VALUES (‘88888888’,‘ANTERO’,‘OLIVERA’,8080,‘31/01/2017’,‘’)
Es decir, se sigue la misma estrategia que en la publicación
anterior. Se concatenan trozos de cadenas y datos introducidos por el usuario
hasta conseguir una cadena con forma de instrucción SQL.
En este ejemplo, la instrucción
SQL construida por concatenación es una instrucción INSERT INTO que permite
introducir en la tabla Trabajadores los
datos de un nuevo trabajador.
El objeto que se encarga de
ejecutar dentro de la base de datos la instrucción SQL recién construida es el
objeto sentencia:
sentencia.executeUpdate(consulta);
Como se puede observar,
para ejecutar instrucciones SQL de acción ya no se usa el método executeQuery, sino que se usa el
método executeUpdate.
Una vez ejecutada la
introducción del nuevo registro en la base de datos, se llama al procedimiento mostrarTodosLosTrabajadores
el cual se encarga de mostrar todo el contenido de la tabla Trabajadores
en el panel de texto. Gracias a este método, veremos como se rellena el panel y
observaremos al nuevo registro recién introducido.
La razón de que se
programara aparte el método mostrarTodosLosTrabajadores para
mostrar el listado completo de trabajadores ha sido debido a la intención de
llamar a este método desde otros lugares del programa. Es decir, la intención
ha sido centralizar código y evitar su repetición.
Hay que tener en cuenta que
todo este código está rodeado de un try ... catch para evitar cualquier
error inesperado. Ten en cuenta que pueden producirse errores fácilmente si introducimos
valores incorrectos en los cuadros de texto.
- Finalmente ejecuta el
programa y comprueba su funcionamiento añadiendo varios trabajadores a la
tabla:
CONCLUSIONES:
Se pueden ejecutar instrucciones SQL del tipo INSERT INTO (insertar
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 a través de
la concatenación de subcadenas y datos introducidos por el usuario en cuadros
de texto.
Este tipo de instrucciones SQL no devuelven ningún ResultSet, ya
que no extraen datos de las tablas, sino que modifican el contenido de éstas.
No hay comentarios.:
Publicar un comentario