Se aborda cómo crear una vista de aplicación para manipular los datos del Sistema de Base de Datos utilizando Java y cómo se vincula esta vista con la vista de negocio.
Se aplican los conceptos vistos durante el Capítulo 2 sobre mapeo de tablas y
el API JDBC para organizar las ABM (Altas, Bajas y Modificaciones) así como las consultas sobre las tablas.
La Vista de aplicación, por lo tanto, es la encargada de gestionar los datos que
son ingresados por el usuario o las consultas que este realice. Las clases de nivel superior interactúan directamente con el usuario, o mejor, dicho, reciben
eventos desde el usuario y se comunican con las clases bases que mapean a las tablas de la base de datos. En un nivel más bajo la comunicación se
establece con las clases java que se comunican con el API-JDBC para enviar las
sentencias necesarias para realizar las operaciones SQL – DML de INSERT,
UPDATE, DELETE y SELECT
Los Temas tratados en esta parte son:
1. Clases de operaciones básicas a realizar sobre Bases de Datos Relacionales. SQL-DML.
2. Creación de la Vista de Aplicación con JFrame, JInternalFrame y Menús
avanzados en Java Swing.
3. Operaciones ABM (Altas, Bajas y Modificaciones) en un entorno de desarrollo. SQL-DML.
4. Consultas a la Base de datos en un entorno de desarrollo.
Proyecto integrador. Las TIC en la sociedad S4.pptx
POOABD (POO Aplicada a B Datos) - ABMC parte 1
1. PROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOS
APLICADA A BASES DE DATOS
APLICADA A BASES DE DATOS
Por
LAURA NOUSSAN LETTRY
Operaciones sobre Bases de Datos - Parte 1
Aviso Legal
El presente libro electrónico
se distribuye bajo
Attribution-NonCommercialNoDerivs 3.0 Unported
2. POO APLICADA A BASES DE DATOS
ÍNDICE
Operaciones sobre Bases de Datos – PARTE 1
Introducción
1. Clases de operaciones básicas a realizar sobre Bases de Datos Relacionales.
SQL-DML.
2. Creación de la Vista de Aplicación con JFrame, JInternalFrame y Menús
avanzados en Java Swing.
3. Operaciones ABM (Altas, Bajas y Modificaciones) en un entorno de desarrollo.
SQL-DML.
4. Consultas a la Base de datos en un entorno de desarrollo. Uso del Control
Swing JTable.
1
2
2
7
FUENTES Bibliográficas Consultadas
1. Documentación sobre Swing:
http://docs.oracle.com/javase/tutorial/uiswing/index.html
2. API JDBC:
http://www.oracle.com/technetwork/java/overview-141217.html
The Java Tutorial:
http://docs.oracle.com/javase/tutorial/jdbc/index.html
BIBLIOGRAFÍA para el Alumno
1.
Contenidos de esta Unidad
2.
Programas fuentes linkeados en el site web de la materia y que son
complementarios al contenido.
3.
Demás material bibliográfico linkeado en el sitio web de la materia.
(*)
ACTIVIDADES
Unidad 3
Parte 1
Tareas
Lectura, trabajos, prácticas propuestas en el Website de la Materia.
(*): En el Website de la materia:
http://www.lnoussanl.com.ar/javabd/
3. POO APLICADA A BASES DE DATOS
Operaciones sobre Bases de Datos – PARTE 1
INTRODUCCIÓN
Esta parte trata de cómo crear una vista de aplicación para manipular los datos
utilizando Java y cómo se vincula esta vista con la vista de negocio.
Se aplican los conceptos vistos durante el Capítulo 2 sobre mapeo de tablas y
el API JDBC para organizar las ABM (Altas, Bajas y Modificaciones) así como
las consultas sobre las tablas.
La Vista de aplicación, por lo tanto, es la encargada de gestionar los datos que
son ingresados por el usuario o las consultas que este realice. Las clases de
nivel superior interactúan directamente con el usuario, o mejor, dicho, reciben
eventos desde el usuario y se comunican con las clases bases que mapean a
las tablas de la base de datos. En un nivel más bajo la comunicación se
establece con las clases java que se comunican con el API-JDBC para enviar las
sentencias necesarias para realizar las operaciones SQL – DML de INSERT,
UPDATE, DELETE y SELECT
4. POO APLICADA A BASES DE DATOS
OPERACIONES SOBRE BASES DE DATOS
TR
Y
Clases de operaciones básicas a realizar sobre Bases de Datos Relacionales.
SQL-DML.
Concepto
-L
ET
Las clases básicas de operaciones a realizar sobre bases de datos relacionales tienen que ver con el SQL
DML, es decir, con operaciones tendientes a manipular los datos almacenados. Por lo tanto es importante
repasar todo lo visto sobre SQL y en particular SQL-DML.
Las operaciones SQL-DML que se llevarán a cabo se pueden dividir en dos grupos:
a) Operaciones que nos permitirán actualizar los datos de la base de datos
b) Operaciones que nos devolverán un resultado para poder mostrar la información al usuario
mediante pantallas o informes.
Operaciones de actualización
Las operaciones que nos permitirán actualizar la base de datos son sentencias SQL –DML: INSERT,
UPDATE y DELETE.
AN
Un aspecto importante aquí es que para poder modificar o eliminar registros debemos primero encontrar
el registro a modificar o eliminar; por lo tanto la obtención del dato es fundamental y lógicamente implica
una búsqueda del registro, mediante la clave primaria utilizando una sentencia SELECT.
Operaciones con consultas e informes
Aspectos importantes a tener en cuenta
SS
Las operaciones para devolver información al usuario utilizan la sentencia SELECT simple o con
restricciones o proyecciones y pueden incluir una o más tablas. Ya se trate de una consulta por pantalla o
de un informe, siempre la manera de obtener los datos es mediante uno o más SELECT.
OU
Las sentencias SQL-DML deben enviarse desde la aplicación, es decir desde las clases de nivel superior
que gestionan los formularios ABM o los formularios de consultas.
Las clases bases y las clases CORE que se comunican con el API JDBC están en el nivel más bajo de la
aplicación y capturan las sentencias SQL DML y las envían al API para actualizar la base de datos u
obtener los datos necesarios.
aN
Creación de la Vista de Aplicación con JFrame, JInternalFrame y Menús
avanzados en Java Swing.
Ya en la Unidad 2 hemos visto la utilización de estos formularios, a la cual nos remitimos. Haciendo un
repaso de los conceptos sobre objetos vistos, la aplicación tiene que tener un solo formulario iniciador o
runtime de modo tal que la aplicación sea del tipo MDI. Ello se logra mediante la utilización de la clase
JFrame del paquete JavaSwing.
La
ur
El formulario principal (clase JFrame) tiene una estructura que permite vincular y contener el Menú
Principal y los diferentes formularios que son llamados a través del menú. Para lograr esto, el JFrame
debe tener como mínimo dos contendores: uno que contendrá el menú principal y otro que permita
vincular los diferentes formularios que son llamados a través del menú principal.
El menú principal utiliza como contenedor un objeto de la clase JMenuBar. La construcción del menú
puede apreciarse en el capítulo 2, siendo fácil e intituitiva su construcción. Utiliza la lógica jerárquica ya
que en el contendor o JMenuBar tenemos los JMenu y contenidos en los JMenu los JMenuItem. En el
capítulo 2 parte 2 está desarrollado la creación de Menús.
Pr
of.
Los formularios que permiten realizar las ABM y las consultas/informes son objetos JInternalFrame,
formularios internos, como su nombre lo indica que no cuentan con un método main o runtime y son
añadidos al JFrame mediante un panel contenedor: JDesktopPane.
Siguiendo el ejemplo didáctico de la Escuela, la imagen muestra la vista de la aplicación, separada de la
vista del negocio: las clases coloreadas en rojo corresponden a la vista de aplicación, es decir, son los
diferentes JInternalFrame que realizarán las operaciones ABM o las consultas.
Las clases coloreadas en amarillo, son las clases base, aquellas que surgen del mapeo de las tablas y
forman parte de la vista del negocio. Las clases coloreadas en color fucsia son clases que pertenecen
OPERACIONES SOBRE BASES DE DATOS– parte 1 pág. 1/8
5. POO APLICADA A BASES DE DATOS
SS
AN
-L
ET
TR
Y
también a la vista del negocio, pero son todavía de más bajo nivel puesto que su objetivo es comunicarse
con el API JDBC y dejar en este nivel toda la complejidad de las Excepciones.
OU
Operaciones ABM (Altas, Bajas y Modificaciones) en un entorno de desarrollo.
SQL-DML.
Hemos agregado una clase más al paquete CORE, que nos permitirá enviar los datos ingresados por el
usuario (en el nivel de la Vista de Aplicación) al API JDBC y desde allí a la base de datos.
aN
En la vista de aplicación tendremos los formularios que gestionarán las Altas, Bajas y Modificaciones, es
decir que llevarán a cabo las inserciones, modificaciones o eliminaciones de datos de la base de datos. En
realidad, en este nivel (vista de aplicación) sólo se enviarán sentencias INSERT, UPDATE y DELETE o
SELECT mediante cadenas que serán tomados por las
clases base y por las clases de manipulación de datos
del paquete CORE.
La
ur
El proyecto TOI_APP_MODELO_etapa1 desarrollado en
Netbeans, permitirá entender la estructura de la
aplicación.
La clase TOI_APP_MODELO_ETAPA_1.java es el
formulario principal, un JFrame y está ubicado en el
paquete del mismo nombre.
Pr
of.
En este paquete también tenemos las clases bases
que son aquellas que mapean a las tablas de la base
de datos: Alumno.java, Localidad.java, Materia.java y
Nota.java.
También podemos apreciar que hay otras dos clases:
consuMaterias.java y gesMaterias.java. Estas son
clases JInternalFrame que permiten llevar a cabo las
consultas y las ABM, respectivamente.
También podemos ver que existe otro paquete, el
paquete CORE y que está formado por las clases que
ya hemos visto en el capítulo 2: Conectar.java y
UsarConexion.java.
OPERACIONES SOBRE BASES DE DATOS– parte 1 pág. 2/8
6. POO APLICADA A BASES DE DATOS
También podemos ver que hemos agregado el controlador JDBC MySQL en las librerías.
Y
Estaría faltando crear las otras clases que permitan llevar a cabo las consultas y ABM sobre las otras
tablas con que cuenta la base de datos, es decir, que permitan operar sobre las tablas Localidades,
Alumnos y Notas.
TR
Sin embargo, el procedimiento es el mismo, cambian los atributos que tienen estas tablas y las claves
foráneas, que la tabla Materias no tiene.
En las siguientes imágenes se muestran los dos formularios de la clase JInternalFrame que gestionan las
ABM y las consultas de la tabla Materias.
-L
ET
El formulario gesMaterias.java, que como ya dijimos, pertenece a la clase JInternalFrame y en definitiva
gestiona las ABM (SQL INSERT, UPDATE, DELETE) de la Tabla Materias.
aN
OU
SS
AN
El formulario tiene habilitado el botón Agregar y el botón Buscar, estando los demás deshabilitados. Esto
se configura directamente desde la ventana de propiedades del JInternalFrame. El motivo de que los
botones Modificar y Borrar estén desactivados es que sólo se puede borrar o modificar un registro a la
vez, y para ello el usuario debe primero solicitar al DBMS el registro que quiere modificar o eliminar, lo
cual se lleva a cabo mediante el código fuente del botón Buscar.
Pr
of.
La
ur
Este es el formulario que gestiona las consultas, y que por el momento los resultados serán mostrados en
un componente nuevo: JTextArea de la librería JavaSwing.
OPERACIONES SOBRE BASES DE DATOS– parte 1 pág. 3/8
7. POO APLICADA A BASES DE DATOS
OPERACIÓN de ALTA (SQL INSERT)
AN
-L
ET
TR
A continuación se explica el código del botón Agregar del formulario gesMaterias.java
Y
OPERACIONES ABM
SS
El código tiene dos controles de validación importantes: 1º que el usuario esté conectado para poder
realizar la inserción y el 2º que haya completado todos los cuadros de texto necesarios (recordar que la
mayoría de los atributos de las tablas fueron diseñados como obligatorios, es decir, no se aceptan valores
nulos, salvo excepcionalmente).
Si el usuario no cumple con estos requisitos se muestra un mensaje, lógicamente. No hay que olvidar que
las aplicaciones están dirigidas a los usuarios finales, que son personas.
OU
Si se cumple con los requisitos se crea un objeto Materia que tiene como variables los datos que ha
ingresado el usuario en los cuadros de texto (recordar que hay que utilizar las funciones de conversión de
datos que hemos visto con anterioridad)
También tenemos que poder pasar estos datos que ingresó el usuario como una cadana de tipo String
con el SQL necesario (línea 172) y para ello utilizamos el objeto encapsulado Materia. ¡Esto es
sumamente importante! No pasamos los datos ingresados por el usuario en forma directa a la cadena,
sino que utilizamos el objeto Materia para encapsular la información!
aN
Finalmente en las líneas 173 y 174 utilizamos las clases del paquete CORE para que la cadena pueda ser
pasada al API-JDBC: primero se crea un objeto UsarConexion y luego se llama al método ABM de esta
clase.
OPERACIÓN de MODIFICACIÓN (SQL UPDATE)
La
ur
Para modificar los datos es necesario lógicamente que el usuario esté conectado pero también que haya
encontrado el registro que quiere modificar. Esto también es válido para eliminar un registro, de lo
contrario podríamos modificar o eliminar todos los registros de la tabla.
Así pues lo primero que debe hacer el usuario, además de estar conectado, es buscar el registro que
quiere modificar. Esto se lleva a cabo mediante el botón BUSCAR.
Como en el caso anterior, primero se valida que el usuario esté conectado (línea 221).
También se deshabilita, por precaución, el botón Agregar.
Pr
of.
La cadena de búsqueda debe ser un SELECT con restricción, para lo cual se debe utilizar la clave
primaria, como se puede apreciar en la línea 209. El usuario, para ello debe ingresar el ID de la materia
que quiere recuperar los datos.
Las líneas que siguen son invocaciones a la clase UsarConexion del paquete CORE. La primera línea
permite devolver la conexión que tiene el usuario a la base de datos.
Con el código usarLaConexion.Consultar(cadena), estamos pasando la cadena de búsqueda, es decir el
SQL necesario para obtener un registro.
Necesitamos un arreglo de tipo cadena (línea 229) para devolver todas las columnas del registro, si es
que este existe.
OPERACIONES SOBRE BASES DE DATOS– parte 1 pág. 4/8
8. AN
-L
ET
TR
Y
POO APLICADA A BASES DE DATOS
SS
El siguiente código if(usarLaConexion.getCantidadRegistros()>0); utiliza la clase del paquete Core para
saber la cantidad de filas que devuelve la consulta. Este método ha sido agregado en la clase
UsarConexion ya que si la consulta no devuelve registros (la cantidad de filas = 0) hay que indicárselo al
usuario.
Finalmente, si el registro existe (es decir, si la longitud del arreglo es mayor que cero) asignamos a las
variables de los cuadros de texto idmateria y nom_materia los valores devueltos por el API-JDBC.
OU
En este formulario sólo tenemos dos cuadros de texto: el ID de la materia y el nombre de ésta. Se utiliza
La sintaxis: this.idmateria.getText(datosTabla[0]); porque este idmateria es un atributo de la clase
gesMateria.java, es decir, espcíficamente es el nombre de variable del cuadro de texto o JTextField
correspondiente al ID de la materia. El método setText es un método de la clase JTextField que permite
asignar un valor al cuadro de texto, es decir, el que tiene la columna idmateria de la tabla Materia.
aN
El código this.nom_materia.setText(datosTabla[1]); lo que hace es asignarle a la variable nom_materia
del JTextField correspondiente al nombre de la materia el valor que el atributo nom_materia de la tabla
Materias tiene.
La siguiente imagen muestra el código que se ejecuta al presionar el botón MODIFICAR, ya que el usuario
ya trajo los datos del registro que quiere modificar:
Pr
of.
La
ur
El código tiene las líneas necesarias para validar que el usuario no haya dejado cuadros de texto en
blanco (esto por cómo hemos diseñado la base de datos)
OPERACIONES SOBRE BASES DE DATOS– parte 1 pág. 5/8
9. -L
ET
TR
Y
POO APLICADA A BASES DE DATOS
AN
En la línea 197 tenemos la creación del objeto Materia, con lo cual encapsulamos los datos ingresados por
el usuario y más adelante la cadena de modificación, es decir, la sentencia SQL UPDATE, que toma los
datos del objeto previamente creado.
SS
Las líneas que siguen son del paquete CORE, las mismas que hemos utilizado para hacer el INSERT, y a
cuya explicación nos remitimos.
OPERACIÓN de ELIMINACIÓN o BORRADO (SQL DELETE)
OU
Como en el caso de las modificaciones, para eliminar un registro de la tabla el usuario debe solicitar dicho
registro, motivo por el cual también es necesario utilizar el botón buscar.
El método que se utiliza es el mismo visto con anterioridad para las modificaciones, a las cuales nos
remitimos.
Pr
of.
La
ur
aN
La siguiente imagen muestra el código necesario para eliminar un registro de la tabla Materias.
Como en los casos anteriores, se verifica previamente que el usuario haya realizado la búsqueda y los
datos de los cuadros de texto no estén vacíos.
Se crea con posterioridad un objeto Materia que sirve para después crear la cadena que será pasada al
API para eliminar el registro (líneas 255 a 26).
OPERACIONES SOBRE BASES DE DATOS– parte 1 pág. 6/8
10. POO APLICADA A BASES DE DATOS
Las siguientes líneas de código son las mismas que las utilizadas para la modificación de datos.
Y
Consultas a la Base de datos en un entorno de desarrollo. Uso del Control
Swing JTable.
Recomendamos repasar estos temas que han sido abordados en la Unidad 1.
-L
ET
Por el momento se utilizará
un nuevo control Swing:
JTextArea, que permitirá ver
los datos devueltos en forma
de texto. Más adelante
abordaremos el uso del
control JTable.
TR
Las consultas a la Base de datos siempre implican la utilización de la sentencia SQL SELECT. Como
sabemos, las consultas pueden tener restricciones, proyecciones o ambas operaciones. Además las
consultas pueden incluir más de una tabla.
SS
AN
También por ahora, se
utilizará la consulta general,
es decir el SELECT sino
ninguna
restricción
ni
proyección y sobre la tabla
que estamos consultando.
Más adelante, en una etapa
2
de
la
aplicación
utilizaremos consultas más
complicadas,
que
dependerán
de
los
parámetros que ingrese el
usuario.
OU
Si es importante también hacer notar que los informes surgen de las consultas, tema que será abordado
con posterioridad en la parte 2 de este capítulo mediante el uso de un plugin.
Pr
of.
La
ur
aN
Ahora tenemos que remitirnos a la imagen del formulario consuMaterias.java, que es de la clase
JInternalFrame. Este formulario tiene un solo botón y un JTextArea. El código fuente se muestra a
continuación, y cabe aclarar que es el mismo que se ha visto en la Unidad 2
OPERACIONES SOBRE BASES DE DATOS– parte 1 pág. 7/8
11. POO APLICADA A BASES DE DATOS
Y
Como vimos con anterioridad para las ABM, lo primero es validar que el usuario esté conectado a la base
de datos.
Luego la variable cadena tiene asignada la setencia SQL clásica de consulta.
TR
Las siguientes líneas tienen que ver con los datos que se le deben o deberían mostrar al usuario: los
nombres de los atributos y los datos que tienen estos atributos para los diferentes registros de la tabla
Materias.
De allí que tengamos dos variables de tipo String: titColumnas[] que es un arreglo de cadenas y datos
que es una cadena que contendrá los datos contenidos en la tabla.
-L
ET
Las siguientes líneas hacen uso de la clase UsarConexion del paquete CORE.
UsarConexion consulta = new UsarConexion(Conectar.getConexion()));
Esta línea devuelve la coneixión que tiene abierta el usuario y se asigna a la variable consulta que es de
tipo UsarConexion
La línea consulta.Consultar(cadena); le pasa a la clase UsarConexion la consulta y se le indica que se
queire consultar la base de datos
Las dos líneas que siguen implican que se ejecutó la consulta y asignan tanto los nombres de las
columnas de la tabla Materias y los datos de cada uno de los registros.
AN
La línea this.areaConsulta.setText(mostrarConsulta(titColumnas,datos)); lo que hace es asignar al
JTextArea el resultado de la consulta.
Pr
of.
La
ur
aN
OU
SS
Para ello se utiliza el método mostrarConsulta, que es un método de la clase consuMaterias.java, y que
se puede apreciar en la imagen a partir de la línea 118.
OPERACIONES SOBRE BASES DE DATOS– parte 1 pág. 8/8