tecnologia cliente servidor con java

99
UNIVERSIDAD NACIONAL DEL SANTA FACULTAD DE INGENIERIA E.A.P INGENIERIA DE SISTEMAS E INFORMATICA MANUAL DE TECNOLOGIA CLIENTE - SERVIDOR CON JAVA Ing. Mirko Manrique Ronceros Primera Edición

Upload: kitydos

Post on 26-Jun-2015

885 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tecnologia Cliente Servidor Con Java

UNIVERSIDAD NACIONAL DEL SANTA

FACULTAD DE INGENIERIA

E.A.P INGENIERIA DE SISTEMAS E INFORMATICA

MANUAL DE TECNOLOGIA CLIENTE - SERVIDOR CON JAVA

Ing. Mirko Manrique Ronceros

Primera Edición

Page 2: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

INDICE

Introducción 02

Programación Cliente – Servidor 03

Herramientas para la Programación Cliente – Servidor 04

Arquitectura Cliente – Servidor 06

Conectividad a la Base de Datos con JDBC 08

Uso del Entorno Netbeans para conexión a Base de Datos 16

Acceso de la base de datos y el paquete java.sql 26

Objeto de control JTable en mantenimiento de datos 38

Swing, Menús y mantenimiento de datos usando varias tablas 50

Mantenimiento de datos usando procedimientos almacenados 66

Transacciones y Búsquedas con base de datos 77

consulta de datos usando el objeto JTable 90

Ing. Mirko Manrique Ronceros Página 2 de 100

Page 3: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

INTRODUCCION

La tecnología llamada Cliente /Servidor es actualmente utilizada en casi todas las

aplicaciones administrativas e Internet/Intranet. Bajo este esquema, un servidor es

un ordenador remoto, en algún lugar de una red, que proporciona información según

se le solicite. Mientras que un cliente funciona en su computadora local, se comunica

con el servidor remoto y pide a éste información.

Los sistemas Cliente-Servidor pueden ser de muchos tipos, pues esto depende

principalmente de las aplicaciones instaladas en el propio servidor. Entre otros,

existen: servidores de impresión mediante los cuales los usuarios comparten

impresoras, servidores de archivos con los que los clientes comparten discos duros,

servidores de bases de datos donde existe una única base de datos que es consultada

por los clientes y puede o no ser modificada por ellos y servidores Web que utilizan

también la tecnología Cliente/Servidor, aunque añaden aspectos nuevos y propios a la

misma.

Los servidores web quizás actualmente son los de mayor importancia. Un servidor

web es aquel que permite a los clientes compartir datos, documentos y multimedia en

formato web. Aunque parte de la tecnología Cliente/Sevidor, el servidor Web aporta

ventajas adicionales a un servidor tradicional.

El presente documento Tecnología Cliente Servidor con Java es un manual

orientado al conocimiento del lenguaje Java, utilizando como entorno de desarrollo

NetBeans y un gestor de bases de datos de preferencia MySql. En este manual se

hará una presentación y estudio de las interfaces visuales a través de Java como

lenguaje de programación. El manual tendrá 03 temas fundamentales, la primera es

el “Acceso de Datos”, la segunda es “Mantenimiento de Datos” y la tercera

“Consultas e Informes”.

Ing. Mirko Manrique Ronceros Página 3 de 100

Page 4: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Progra m aci ó n Cliente - Servidor Java es un nuevo lenguaje de programación, como tantos otros. Así que uno se pregunta el

por qué del revuelo que se ha formado con su aparición. La respuesta no es inmediatamente

obvia si se observa el asunto desde el punto de vista de la programación tradicional, porque

aunque resuelve algunos de los problemas típicos de este tipo de programación, lo que

verdaderamente es importante es que también resuelve los problemas que se generan en

Internet, en la Telaraña Mundial, en el World-Wide-Web, en la Web. Internet es un sistema

Cliente-Servidor gigante. La idea primaria de un sistema cliente-servidor es que debe haber

un sitio donde se centraliza la información, que se desea distribuir bajo demanda a un

conjunto de personas o máquinas.

La clave de este concepto radica en que si se produce un cambio en la información del

sistema central, inmediatamente es propagada a los receptores de la información, a la

parte cliente. Luego, el concepto básico es muy simple; el problema se presenta cuando

hay solamente un servidor que tiene colgados a muchos clientes, en que el rendimiento

general del sistema decrece de forma exponencial al aumento del número de clientes. El

funcionamiento de la Web sigue este mismo principio. Inicialmente, se solicita una

información a un servidor y éste envía de vuelta un fichero que será interpretado por el

navegador (el cliente) que lo formateará para visualizarlo en la máquina cliente. El

navegador fue el primer paso adelante en la expansión de Internet, ya que permitía

visualizar un mismo fichero en plataformas diferentes sin hacerle cambio alguno; pero su

finalidad principal es la visualización de ficheros, no la interactividad con el usuario, ni la

posibilidad de ejecutar programas en la parte del usuario, en la parte cliente del sistema.

Java está siendo continuamente extendido para proporcionarle nuevas características y

librerías que resuelven elegantemente problemas que son muy difíciles en la programación

tradicional como el acceso a bases de datos, el uso de multihilo, la programación de redes y

la programación distribuida, y además porque Java, a través de los applets, permite la

programación de la parte cliente. Un applet es un miniprograma que corre solamente bajo

un navegador y es descargado automáticamente como parte de una página Web, al igual

que cualquier gráfico, y cuando se activa, ejecuta un programa. Este es el interés,

proporciona una forma a través de la cual se puede distribuir software al cliente desde el

servidor, en el momento en que el cliente necesite ese software, y no antes, con lo cual

siempre tendrá el cliente la última versión de ese software, se actualice cuando se actualice.

Además, tal como está diseñado Java, el programador necesita crear su programa una sola

vez, y ya estará listo para ser ejecutado en todas las plataformas que dispongan de un

navegador con soporte Java.

Ing. Mirko Manrique Ronceros Página 4 de 100

Page 5: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

H e rramientas p a ra la Progra m aci ó n Cliente - S e r v i d or :Tenemos:

Sockets

– Implementados en todos los sistemas operativos modernos.

– Comunican dos procesos que pueden estar alojados en dos máquinas diferentes.

– El cliente debe conocer la máquina y el puerto donde se ubica el servidor.

– Se debe establecer un protocolo cliente/servidor para el correcto funcionamiento de la

aplicación.

RPCs

– Basado en Sockets. Abstrae al programador del uso de Sockets.

– Sigue siendo necesaria la distinción del código cliente y del código servidor.

Alternativas para desarrollo de aplicaciones:

1. C O RB A :

Es necesario que exista una versión de CORBA para la plataforma donde se quiere

implementar.

V entajas :

● Soporta múltiples plataformas y lenguajes de programación.

● Dispone de una gran cantidad de servicios

● Definida por un organismo serio e independiente

Inc o ve n ientes :

● Complejidad en el desarrollo

● Lentitud para adaptarse

● Pocas implementaciones libres.

2. NET

V entajas :

● Soporta múltiples plataformas

● Fácil proceso de desarrollo (Visual Studio .Net)

● Entorno Windows muy extendido.

● Buen marketing

Inconvenientes:

● Exclusiva del sistema operativo Windows

● Propia de Microsoft

● Casi ninguna implementación libre.

Ing. Mirko Manrique Ronceros Página 5 de 100

Page 6: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

3. J A V A EE

V entajas :

● Soporta para múltiples plataformas y sistemas operativos

● Avalado por múltiples empresas (SUN, IBM, ORACLE, etc)

● Competitividad

● Soluciones Libres

Inconvenientes:

● Exclusivo para el lenguaje Java

● Complejidad relativa en el desarrollo de aplicaciones

● No existe un entorno de desarrollo fijo.

Arquitectura Cliente Servidor:Modelo Lógico:

● Gestor de presentación: Muestra la interface del usuario.

● Lógica de Presentación: Establece que se debe mostrar al usuario.

● Lógica de la Aplicación: Funcionalidad de la aplicación.

● Lógica de Negocio: Funcionalidad de la empresa, común para todas las

aplicaciones.

● Lógica de los datos: Definición lógica de los datos (vistas, tablas, tipos de datos,

claves, etc.)

● Gestor de Datos: Encargada de escribir y acceder a la base de datos.

Modelo Físico:

– 1 capa (Sistema monolítico, no es realmente una aplicación C/S)

Ing. Mirko Manrique Ronceros Página 6 de 100

Page 7: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

– 2 capas (Cliente Servidor tradicional)

– 3 capas (Cliente – Lógica Negocio – Datos)

El modelo de 3 capas esta basado en objetos:– Clientes: Que son aplicaciones propias

– Lógica de Negocio y de Datos: Objetos distribuidos

También está basado en la WEB:

– Clientes: Navagadores

– Lógica de Negocio y de Datos: Generación dinámica de contenidos en lenguaje HTML, XML, xHTML.

Ing. Mirko Manrique Ronceros Página 7 de 100

Page 8: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

CONECTIVIDAD DE LA BASE DE DATOS CON JDBC

¿Qué es un JDBC?

La conectividad de la base de datos de Java (JDBC , Java Database Connectivity) es un

marco de programación para los desarrolladores de Java que escriben los programas que

tienen acceso a la información guardada en bases de datos, hojas de calculo, y archivos

"planos". JDBC se utiliza comúnmente para conectar un programa del usuario con una base

de datos por “detrás de la escena”, sin importar qué software de administración o manejo de

base de datos se utilice para controlarlo.

Para la gente del mundo Windows, JDBC es para Java lo que ODBC es para Windows.

Windows en general no sabe nada acerca de las bases de datos, pero define el estándar

ODBC consistente en un conjunto de primitivas que cualquier driver o fuente ODBC debe

ser capaz de entender y manipular. Los programadores que a su vez deseen escribir

programas para manejar bases de datos genéricas en Windows utilizan las llamadas ODBC.

Con JDBC ocurre exactamente lo mismo: JDBC es una especificación de un conjunto de

clases y métodos de operación que permiten a cualquier programa Java acceder a sistemas

de bases de datos de forma homogénea. Lógicamente, al igual que ODBC, la aplicación de

Java debe tener acceso a un driver JDBC adecuado. Este driver es el que implementa la

funcionalidad de todas las clases de acceso a datos y proporciona la comunicación entre el

API JDBC y la base de datos real.

ODBC es un interfaz escrito en lenguaje C, que al no ser un lenguaje portable, haría que las

aplicaciones Java también perdiesen la portabilidad. Y además, ODBC tiene el inconveniente

Ing. Mirko Manrique Ronceros Página 8 de 100

Page 9: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

de que se ha de instalar manualmente en cada máquina; al contrario que los drivers

JDBC, que al estar escritos en Java son automáticamente instalables, portables y

seguros. La conectividad de bases de datos de Java se basa en sentencias SQL, por lo que

se hace imprescindible un conocimiento adecuado de SQL para realizar cualquier clase de

operación de bases de datos. Aunque, afortunadamente, casi todos los entornos de

desarrollo Java ofrecen componentes visuales que proporcionan una funcionalidad

suficientemente potente sin necesidad de que sea necesario utilizar SQL, aunque para usar

directamente el JDK se haga imprescindible

Acceso a base de datos con JDBC

A continuación vemos los modelos diferentes de acceso a base de datos:

Modelo de 2 capas

El presente modelo se basa en que la conexión se presenta entre la aplicación Java o el

applet (que se ejecuta en el navegador), se conectan directamente a la base de datos.

Como sabemos en Java se puede tener dos tipos de aplicaciones: la aplicación Java

propiamente dico y una aplicación applet, esta última que se ejecuta en un navegador.

Observamos en la figura que el driver o controlador JDBC debe residir en la computadora

local. La base de datos puede estar en cualquier otra máquina y se accede a ella

mediante la red. Esta es la configuración de típica Cliente/Servidor: el programa cliente

envía instrucciones SQL a la base de datos, ésta las procesa y envía los resultados de

vuelta a la aplicación

Modelo de 3 capas

El presente modelo, las instrucciones son enviadas a una capa intermedia entre Cliente y

Servidor, que es la que se encarga de enviar las sentencias SQL a la base de datos y

recoger el resultado desde la base de datos. En este caso el usuario no tiene contacto

directo, ni a través de la red, con la máquina donde reside la base de datos.

Ing. Mirko Manrique Ronceros Página 9 de 100

Page 10: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Comparando con el modelo anterior, se observa que el driver o controlador JDBC se

encuentra junto al servidor de aplicaciones, esto hace que la máquina del cliente no se

preocupe por instalar el controlador. El nivel intermedio mantiene en todo momento el

control del tipo de operaciones que se realizan contra la base de datos.

Clasificación de los Drivers

El driver JDBC puede pertenecer a una de las siguientes categorías:

Puente JDBC-ODBC

Utilizada por Sun inicialmente para popularizar JDBC y consiste en aprovechar todo lo

existente, estableciendo un puente entre JDBC y ODBC. Este driver convierte todas las

llamadas JDBC a llamadas ODBC y realiza la conversión correspondiente de los resultados.

Ing. Mirko Manrique Ronceros Página 10 de 100

Page 11: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

La ventaja de este driver, que se proporciona con el JDK, es que Java dispone de acceso

inmediato a todas las fuentes posibles de bases de datos y no hay que hacer ninguna

configuración adicional aparte de la ya existente. La desventaja está en que es lenta y no

será posible ser usada en el sistema operativo Linux.

Java Binario

Este driver se salta la capa ODBC y habla directamente con la librería nativa del

fabricante del sistema DBMS (como pudiera ser DB-Library para Microsoft SQL Server o CT-

Lib para Sybase SQL Server). Este driver es un driver 100% Java pero aún así

necesita la existencia de un código binario (la librería DBMS) en la máquina del cliente,

con las limitaciones y problemas que esto implica.

100% Java/Protocolo Nativo

Este driver es realizado completamente en Java que se comunica con el servidor DBMS

utilizando el protocolo de red nativo del servidor. De esta forma, el driver no necesita

intermediarios para hablar con el servidor y convierte todas las peticiones JDBC en

peticiones de red contra el servidor. La ventaja de este tipo de driver es que es una solución

100% Java y, por lo tanto, independiente de la máquina en la que se va a ejecutar

el programa

Ing. Mirko Manrique Ronceros Página 11 de 100

Page 12: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

La única desventaja de este tipo de drivers es que el cliente está ligado a un servidor

DBMS concreto.

100% Java/Protocolo Independiente

Requiere la presencia de un intermediario en el servidor. En este caso, el driver JDBC

hace las peticiones de datos al intermediario en un protocolo de red independiente del

servidor DBMS. El intermediario a su vez, que está ubicado en el lado del servidor, convierte

las peticiones JDBC en peticiones nativas del sistema DBMS. La ventaja de este método es

inmediata: el programa que se ejecuta en el cliente, y aparte de las ventajas de los drivers

100% Java, también presenta la independencia respecto al sistema de bases de datos que

se encuentra en el servidor.

Cargar el controlador JDBC

Para trabajar con el API JDBC se tiene que importar el paquete java.sql, tal y como se

indica a continuación:

import java.sql.*;

En este paquete se definen los objetos que proporcionan toda la funcionalidad que se

requiere para el acceso a bases de datos. El siguiente paso después de importar el paquete

java.sql consiste en cargar el controlador JDBC, es decir un objeto Driver específico para

una base de datos que define cómo se ejecutan las instrucciones para esa base de datos

en particular.

Hay varias formas de hacerlo, pero la más sencilla es utilizar el método forName() de la

clase Class:

Class.forName("Controlador JDBC");

Para el caso particular del controlador para MySQL, Connector/J, se tiene lo siguiente:

Class.forName("com.mysql.jdbc.Driver");

Ing. Mirko Manrique Ronceros Página 12 de 100

Page 13: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Debe tenerse en cuenta que el método estático forName() definido por la clase Class genera

un objeto de la clase especificada. Cualquier controlador JDBC tiene que incluir una parte

de iniciación estática que se ejecuta cuando se carga la clase. En cuanto el cargador de

clases carga dicha clase, se ejecuta la iniciación estática, que pasa a registrarse como un

controlador JDBC en el DriverManager.

Es decir, el siguiente código:

Class.forName("Controlador JDBC");

es equivalente a:

Class c = Class.forName("Controlador JDBC");

Driver driver = (Driver)c.newInstance();

DriverManager.registerDriver(driver);

Algunos controladores no crean automáticamente una instancia cuando se carga la clase. Si

forName() no crea por sí solo una instancia del controlador, se tiene que hacer esto de

manera explícita:

Class.forName("Controlador JDBC").newInstance();

De nuevo, para el Connector/J:

Class.forName("com.mysql.jdbc.Driver").newInstance();

En toda aplicación de bases de datos con MySQL es indispensable poder establecer la

conexión al servidor para posteriormente enviarle las consultas. Los programas en Java

no son la excepción. El siguiente código nos servirá para verificar que podemos

establecer una conexión a nuestra base de datos transportes

import java.sql.*;public class TestConnection{

Static String bd=”transportes”; static String login=”bingo”; static String password=”hola”;static String url=”jdbc:mysql://localhost/”+bd;public static void mian(String[ ] args)throws IOException{

Connection conn = null;try{

Class.forName(“com.mysql.jdbc.Driver).newInstance(); conn = DriverManager.getConnection(url,login,password); if (conn != null){

System.out.println(“Conexión a la base de datos ”+bd+”... OK”);conn.close();

}

Ing. Mirko Manrique Ronceros Página 13 de 100

Page 14: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

}catch(SQLException ex){

System.out.println(ex);}catch(ClassNotFoundException ex){

System.out.println(ex);}

}}

En esta programación se inicia importanto el paquete sql perteneciente a java. El signo

del asterisco significa que el programa puede hacer uso de culaquier clase contenida en el

paquete sql. Se construye la clase TextConnection, estableciendo 4 variables o

atributos de tipo String donde se almacena el nombre de la base de datos, el login, la

contraseña o password y el url.

Una vez en el método principal llamado main se declara la variable objeto conn y a través de

la instrucción try se busca proteger la ejecución ante posibles errores (lo que se denomina

manejo de excepciones).

Con la instrucción: Class.forName(“com.mysql.jdbc.Driver).newInstance();, se establece el

driver para el gestor de base de datos MySql. Luego en la siguiente línea de

programación se establece la conexión con la base de datos a través del método

getConnection perteneciente a la clase DriverManager. A través de la sentencia selectiva if

se evalúa el éxito de la conexión, por lo tanto, si la variable conn es diferente de null

significa que se logró la conexión, caso contrario se mostrará mensajes de error, gracias a la

instrucción catch.

A continuación se listan algunas de las salidas que se pueden obtener al ejecutar el

programa anterior:

[blueman@casita]$ java TestConnection

Conexión a base de datos jdbc:mysql://localhost/agendita ... Ok

(significa: Todo funciona bien)

[blueman@casita]$ java TestConnection java.lang.ClassNotFoundException:

com.mysql.jdbc.Driver

(Seguramente no se ha puesto la ruta al archivo connector.jar en la variable de ambiente

CLASSPATH)

[blueman@casita]$ java TestConnection

java.sql.SQLException: Invalid authorization specification: Access denied for

user: 'bingo@localhost' (Using password: YES)

Ing. Mirko Manrique Ronceros Página 14 de 100

Page 15: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

(El login o el password proporcionados no nos permiten el acceso al servidor)

[blueman@casita]$ java TestConnection java.sql.SQLException: No suitable driver

(Probablemente se ha escrito de forma incorrecta el URL para la base de datos)

[blueman@casita]$ java TestConnection

java.sql.SQLException: General error: Access denied for user: 'bingo@localhost' to

database 'transportes'

(Probablemente se ha escrito de manera incorrecta el nombre de la base de datos)

Ing. Mirko Manrique Ronceros Página 15 de 100

Page 16: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

USO DEL ENTORNO DE NETBEANS PARA LACONEXIÓN DE BASE DE DATOS

Conector a la base de datos

Una aplicación en Java para que logre comunicarse con una base de datos usando la API JDBC,

se requiere de un conector. Ese conector es específico para el manejador de base de datos y

viene en la forma de un archivo “.jar” o “.zip”. El conector para la base de datos MySQL, está

en el archivo:

mysql-connector-java-3.1.XX.jar

Existe versiones superiores como la versión 5.0 para dicho conector. NetBeans nos permite la

tarea de conectar una aplicación a una base de datos

Conexión de una Aplicación a una base de datos creada en MySql

Para conectar a una aplicación a una base de datos, se requiere:

1. Agregarle a NetBeans el conector como una biblioteca o librería. Esto permite que el

conector este disponible para los proyectos.

2. Agregarle a un proyecto el conector. Esto permite que la aplicación se pueda conectar a la

base de datos.

A continuación procedemos agregarle a NetBeans un conector a una base de datos MySql:

a. Seleccione la opción Tools/Libraries de la barra de menú del entorno de NetBeans.

Ing. Mirko Manrique Ronceros Página 16 de 100

Page 17: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

b. Se visualiza un

cuadro de

diálogo que

permite

administrar las

librerías o

bibliotecas de

NetBeans. En la

ventana, al lado

izquierdo se

observa las

librerías

agregadas a

NetBeans. Del

lado derecho

aparece el nombre de la biblioteca y la trayectoria del archivo con la biblioteca. Para

agregar el conector a MySQL a NetBeans presione el botón de comando New Library ...

a. Se mostrará un cuadro de diálogo donde se establecerá el nombre que daremos al

conector, como por ejemplo MySQL y luego damos click en el botón de comando OK.

b. Se cierra el cuadro de

diálogo y volvemos a la

ventana anterior donde se

observará la nueva librería

MySQL. Posteriormente

procedemos a dar clic en el

botón de comando Add

JAR/Folder ...

Ing. Mirko Manrique Ronceros Página 17 de 100

Page 18: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

c. Buscamos el conector mysql-connector-java-3.1.7- bin.jar

d. Al dar clic en Add JAR/Folder volvemos a la ventana anterior. Cabe señalar que en las

últimas versiones de NetBeans ya existe una librería o biblioteca para la conexión a una

base de datos de MySql, denominada MYSQL JDBC Driver.

Damos click en el botón de comando Ok y vamos a crear un proyecto:

1) Seleccionamos la opción File/New Proyect de la barra de menú del entorno de

NetBeans.

Ing. Mirko Manrique Ronceros Página 18 de 100

Page 19: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

2) Seleccionamos en Categories: Java y como proyecto: Java Application. Luego damos

click en el botón de comando Next.

3) Luego indicamos como nombre del proyecto campeonatoUefa y posteriormente damos

clic en el botón de comando Finish, quedando el entorno de NetBeans de la siguiente

manera:

Ing. Mirko Manrique Ronceros Página 19 de 100

Page 20: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

4) En Libraries lo seleccionamos y damos clic con el botón de derecho y eligimos la

opción Add Library.

5) Aparece un cuadro de diálogo para seleccionar la librería a agregar, en este caso

MySQL (en las últimas versiones de NetBeans tenemos el conector MySQL JDBC

Driver) y damos clic en Add Library.

6) Volvemos al entorno de NetBeans y se observa la nueva librería agregada.

Ing. Mirko Manrique Ronceros Página 20 de 100

Page 21: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

7) Ahora procedemos a la concexión de una base de datos, que en este caso será la

base de datos transportes, la misma que ya se encuentra creada conjuntamente con

las tablas de Ciudad y

Ruta. Seleccionamos la

pestaña Services y en

Databases seleccionamos

la carpeta Drivers.

8) Para agregar el concetor MySQL, haga clic en el botón derecho del mouse en el

nodo o carpeta Drivers y seleccione la opción New Driver.

9) Aparecerá el cuadro de diálogo para agregar un conector. Dar clic en el botón de

comando Add.

10)Navegar hasta encontrar el conector, seleccionado y dando clic en Abrir.

Ing. Mirko Manrique Ronceros Página 21 de 100

Page 22: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

11) En el cuadro de diálogo para agregar el conector se mostrará la información del

conector seleccionado. Luego dar clic en el botón de comado OK.

12)Un nuevo nodo para el conector a MySql, aparecerá en la pestaña Services.

Ing. Mirko Manrique Ronceros Página 22 de 100

Page 23: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

13) Ahora procederemos a conectarnos con la base de datos de campeonatouefa.

Seleccionamos el driver MySQL y damos clic botón derecho y elegimos la opción

Conecting using.

14)Se muestra un cuadro de diálogo para establecer el URL de la base de datos usando

el siguiente formato:

jdbc:mysql://servidor:puerto/baseDatos

donde servidor es la dirección IP (o nombre de dominio del servidor), en caso que el

servidor esté en la misma computadora que NetBeans utiliza el nombre: localhost;

puerto es el puerto empleado por el servidor. Si el servidor utiliza el puerto

predefinido, se puede omitir; baseDatos es la base de datos a la que se desea

conectar.

15)Damos clic en el botón de comando OK. A continuación aparecerá una ventana

confirmando la conexión con la base de datos de campeonatouefa. Luego damos clic

en el botón de comando OK.

Ing. Mirko Manrique Ronceros Página 23 de 100

Page 24: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

16) En el entorno de NetBeans se mostrará un nuevo nodo de conexión a la base de

datos.

17)Si damos click en + respecto al nodo creado se visualizará la tabla existente en la

base de datos de campeonatouefa.

Ing. Mirko Manrique Ronceros Página 24 de 100

Page 25: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Ing. Mirko Manrique Ronceros Página 25 de 100

Page 26: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

USO DEL ENTORNO DE NETBEANS PARA EL ACCESO DE LA BASE DE DATOS Y EL PAQUETE JAVA.SQL

Acceso a la base de datos desde NetBeans

NetBeans nos permite hacer operaciones sobre la base de datos como crear y borrar tablas,

agregar y eliminar columnas, agregar, modificar y eliminar registros de datos como realizar

consultas.

Vamos a proceder hacer algunas operaciones:

1. Expanda el nodo con la conexión a la base

de datos.

2. Observamos en la figura anterior las

carpetas referidas a Tables (tablas),

Views (vistas) y Procedures

(procedimeintos). Si expandimos el nodo

referido a Tables veremos la tabla estadio.

Ing. Mirko Manrique Ronceros Página 26 de 100

Page 27: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

3. Si seleccionamos el nodo referido a Tables y damos clic botón derecho, se muestra un

menú flotante y luego elegimos la opción Create Table.

4. Vamos a proceder a crear la tabla de Equipo con los campos codequipo int,

nombre varchar(40), representante varchar(32), entrenador varchar(40), grupo

char(1) y estado bit. Una vez indicado los campos damos clic en el botón de comando

OK.

5. Volvemos al entorno de NetBeans y observamos en la pestaña de Services la

nueva tabla de Equipo.

Ing. Mirko Manrique Ronceros Página 27 de 100

Page 28: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

6. Si deseamos insertar un registro a una de las tablas a través del comando insert,

seleccionamos el nodo referido a Tables. Dando clic botón derecho se muestra un menú

flotante y luego seleccionamos la opción Execute Command...

7. Escribimos el comando para insertar un nuevo registro en la tabla de Equipo, luego

procedemos a ejecutarlo.

Ing. Mirko Manrique Ronceros Página 28 de 100

Page 29: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

8. Luego si escribimos el comando select para consultar los datos de la tabla Ciudad,

observaremos el contenido de dicha tabla.

Como verán el entorno de NetBeans nos ofrece la oportunidad de acceder y manipular los

datos y las estructuras de los elementos que conforman una base de datos. Ahora

ustedes mismos, en base a la experiencia de los conocimeintos adquiridos en los cursos

referentes a base de datos, procedan a experimientar el entorno gráfico que nos ofrece

NetBeans.

Ing. Mirko Manrique Ronceros Página 29 de 100

Page 30: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Paquete Java.SQL para trabajar con base de datos

Para realizar una aplicación para que realice cualquier operación de lo más sencilla

posible se necesita de la utilización de varias clases e interfases. JDBC ofrece el paquete

java.sql en la que existen clases e interfaces muy útiles para trabajar con base de datos.

Veamos las más importantes clases o interfases y en la medida en que se desarrolle las

sesiones se detallarán más mencionando los métodos que tienen para hacer fácil el

acceso a la base de datos.

● La clase DriverManager , permite llevar a cabo una conexión con la base de datos

logrando cargar un driver. Existen varios métodos para ello, entre las cuales se

destacan:

public static synchronized Connection getConnection(String url) throws

SQLException

public static synchronized Connection getConnection(Strin url,String user, String

password) throws

El primero de los métodos recibe como parámetro la dirección URL que identifica la

base de datos. En el caso en que sea necesario proporcionar un usuario y una

contraseña para acceder a la base de datos (como sucede en MySql) se utiliza el

segundo de los métodos. Una dirección URL JDBC proporciona un método de

localización de bases muy parecido al que representan las direcciones URL que

identifican sitios Web de Internet. Los controladores JDBC tienen que ser capaces de

conectar con la base de datos a partir de la información contenida en la

dirección URL JDBC de la misma, por lo que son los desarrolladores los que fijan en la

mayoría de los casos la sintaxis.

● La interfaz Connection, cuando se utiliza uno de los métodos anteriormente

mencionados se obtiene un objeto de tipo Connection que representa como es de

esperar la conexión con la base de datos. El objeto obtenido cuenta con varios métodos.

Dos de los más importantes son:

public abstract Statement createStatement() throws SQLException

public abstract void close() throws SQLException

El primero de los métodos sirve para crear un objeto del tipo Statement. Las frases SQL

se ejecutan normalmente mediante la utilización de objetos del tipo Statement.

Finalmente, es conveniente cerrar las conexiones tan pronto como dejen de utilizarse

para liberar recursos. No obstante, ha de tenerse en cuenta que establecer

una conexión es una operación costosa, por lo que tampoco se debe estar abriendo

y cerrando la conexión con frecuencia.

Ing. Mirko Manrique Ronceros Página 30 de 100

Page 31: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

● La interfaz Statement, los objetos de tipo Statement permiten realizar consultas y

efectuar operaciones de actualización, borrado o inserción de datos. En algunos casos es

interesante también fijar ciertos parámetros vinculados con la consulta que se desea

realizar, como por ejemplo el tiempo que estamos dispuestos a esperar a que el gestor de

la base de datos devuelva el resultado de la consulta. Los métodos que se citan a

continuación son algunos de los más importantes para llevar a cabo todas estas acciones.

public abstract ResultSet executeQuery(String sql) throws SQLException

Ejecuta una sentencia SELECT y devuelve el resultado mediante la interfaz

ResultSet

public abstract int executeUpdate(String sql) throws SQLException

Ejecuta una sentencia UPDATE, DELETE, INSERT o cualquier otra sentencia SQL que no

devuelva un conjunto de registros, y devuelve el número de registros afectados por

la sentencia.

public abstract void setMaxRows(int max) throws SQLException

Establece el número máximo de registros que puede devolver executeQuery()

public abstract int getMaxRows() throws SQLException

Devuelve el número máximo de registros que puede devolver executeQuery()

public abstract void setQueryTimeout(int seconds) throws SQLException

Establece el tiempo en segundos que el controlador esperará hasta que el sistema gestor

de bases de datos devuelva un resultado

public abstract int getQueryTimeout() throws SQLException

Devuelve el tiempo en segundos que el controlador esperará hasta que el sistema gestor

de bases de Datos devuelva un resultado

public abstract void close() throws SQLException

Libera los recursos asociados a la sentencia

● La interfaz ResultSet, el método executeQuery que se utiliza para ejecutar

sentencias SQL devuelve un objeto de tipo ResultSet. Éste contiene las filas o registros

obtenidos al ejecutar una sentencia SELECT. Para recuperar los datos contamos con

Ing. Mirko Manrique Ronceros Página 31 de 100

Page 32: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

muchas opciones. Todos los métodos funcionan de la misma manera. Toman como

parámetro el índice o el nombre del campo que se desea obtener y devuelven el dato en

cuestión.

public abstract String getString(int columnIndex) throws SQLException public

abstract String getString(String columnName) throws SQLException public

abstract int getInt(int columnIndex) throws SQLException

public abstract int getInt(String columnName) throws SQLException

Además, existen otros métodos gracias a los cuales es posible recorrer los

resultados guardados en el objeto de tipo ResultSet.

public abstract int findColumn(String columnName) throws SQLException

Devuelve el número de columna cuyo nombre se pasa como parámetro public

abstract boolean next() throws SQLException

Un objeto de tipo ResultSet puede contener más de un resultado. Para ir

avanzando por la lista de resultados utilizamos este método, que devuelve un valor

indicando si existe otro resultado o no.

public abstract boolean wasNull() throws SQLException

Indica si el contenido de la última columna accedida es NULL SQL

public abstract void close() throws SQLException

Libera los recursos asociados al ResultSet

Vamos a proceder a visualizar en objetos Jlist, los datos contenidos de la tabla de Equipo.

1) Creamos un

objeto Jframe

para abrir un

nuevo formulario.

Ing. Mirko Manrique Ronceros Página 32 de 100

Page 33: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

2) Indicamos como nombre de clase formulario: frmverEquipos. Luegos damos click en

el botón de comando Finish.

Quedando el entorno de NetBeans de la siguiente manera:

3) Damos clic botón derecho sobre el diseño del formulario para cambiar el Set

Layout a AbsoluteLayout, lo cual nos permitirá usar los objetos de control más

libremente.

Ing. Mirko Manrique Ronceros Página 33 de 100

Page 34: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

4) Colocamos los objetos de control quedando el diseño del formulario de la siguiente

manera:

5) Borramos los Items de cada objeto Jlist y colocamos los nombres a cada objeto de

control. Recuerden que para eliminar los items de cada Jlist hay que hacer uso de

model que se encuentra en la ventana de propiedades.

Ing. Mirko Manrique Ronceros Página 34 de 100

Page 35: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

6) A continuación procedemos a colocar la programación.

En la primera llave (color rojo) observamos que importamos los paquetes java.sql

(todo lo que acabamos de ver) y el paquete javax.swing para poder utilizar la clase

JoptionPane para la visualización de un mensaje a través de su método

ShowMessageDialog. En la segunda llave se define las variables que se van a

usar. Vendría hacer los atributos de la clase frmVerEquipo. Como tenemos establecer

conexión usaremos un objeto Connection (conn), para hacer una operación de consulta

usaremos un objeto Statement (st) y para almacenar los resultados de la consulta

usaremos un objeto ResultSet (rs). Como la aplicación hace uso de los Jlist se tiene

crear 4 objetos instanciados de la clase DefaultListModel (mayor información en la

sesión 4 del curso de Programación Visual). Posteriormente preparamos variables para

indicar el nombre de la base de datos, el login, el password y el url. En la tercera llave

se ha diseñado un método denominado Enlace que permitirá establecer conexión con

la base de datos campeonatouefa.

Ing. Mirko Manrique Ronceros Página 35 de 100

Page 36: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

7) La clase frmVerEquipo tienen un método del mismo nombre frmVerEquipo(), esto es

lo que se denomina método constructor. Deseamos que los datos se muestren en los

objetos Jlist al momento de la ejecución del formulario debemos programar en el

método antes mencionado.

Los objetos instanciados de la clase DefaultListModel deben ser vinculados a cada

uno de las cajas de listas. Luego usando el bloque try{ } que por cierto sirve para

interceptar errores y si lo hubiera ejecutaría lo programado en el bloque catch{ },

establecemos laconexión usando el método Enlace, creamos el objeto st de tipo

Statement (se encuentra listo para relizar una operación) y luego ejecutamos una

sentencia de consulta con select cuyo resultado va ocasionar que los datos se

almacenen en el objeto rs del tipo ResultSet. Finalmente con el método next

se logra desplazar a través de los registros de datos para ir llenado los

objetos modelo1, modelo2, modelo3 y modelo4 y de esta forma llenamos los

objetos Jlist lo que nos permitirá ver en el formulario los datos de la tabla de

Equipo.

Ing. Mirko Manrique Ronceros Página 36 de 100

Page 37: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

8) Recuerda que en la sesión anterior sólo se agregó un registro a la tabla de Equipo.

Si gustan ingresen más registros a la tabla de Equipo y observarán los resultados.

Si ejecutamos la aplicación observamos lo siguiente:

Ing. Mirko Manrique Ronceros Página 37 de 100

Page 38: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

OBJETO DE CONTROL JTABLE EN MANTENIMIENTO DE DATOS

Objeto de control JTable

La presentación de datos tabulados es una de las tareas más comunes que se presentan al

momento de crear interfaces gráficas; desde la simple tabla que permite únicamente

mostrar el resultado de una consulta, hasta las que permiten editar directamente el

contenido de cada celda, ordenar las columnas, personalizar su apariencia, etc. Todas las

tareas antes descritas, y muchas otras, son posibles de realizar utilizando la clase JTable;

por supuesto, mientras más complejo sea el requerimiento a cubrir, se requerirá en igual

medida utilizar más métodos o recursos de la clase.

El objeto Jtable como los modelos de la tabla representados a través de la interfaz

TableModel, pertenecen al paquete javax.swing.

El siguiente gráfico intenta mostrar como cada componente JTable obtiene siempre sus

datos desde un modelo de tabla.

El TableModel se implementa a partir de la clase AbstractTableModel, aunque existe un

modelo de tabla predeterminado denominado la clase DefaiultTableModel. Las propiedad

más usada es model que permite definir el numero de filas y columnas, siendo los

métodos más usados: setModel(), que permite vincular un modelo al obejto Jtable y

getRowCount(), devuelve el número de filas en la tabla. Para la clase DefaultTableModel

los métodos más utilizados son: AddRow(), añade una fila al final del modelo,

getRowCount() devuelve el número de filas de la tabla de datos, getValueAt()

devuelve el dato ubicado en la posición fila y columna y removeRow() elimina una fila del

modelo según posición indicada.

Ing. Mirko Manrique Ronceros Página 38 de 100

Page 39: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Mantenimiento de Datos usando JTable como vista de datos

Un mantenimiento de datos consiste en grabar datos en una tabla, eliminar datos

correspondiente a un registro de datos como también modificar datos ya almacenados.

Pero para eliminar datos o modificar datos se supone que los datos ya existen en la tabla

de datos entonces se procedera hacer búsquedas sencillas para lograr su ubicación y

proceder a su eliminación o modificación de datos. En esta sesión haremos uso del

reciente explicado objeto JTable para visualizar los datos contenidos en una tabla. A

continuación vamos a seguir usando la base de datos de campeonatouefa ya utilizada

desde la tercera sesión de aprendizaje:

1. Vamos a crear la tabla de estadio en la base de datos campeonatouefa. La

instrucción para la creación de dicha tabla es:

create table estadio(codestadio int not null primary key

auto_increment, nombre varchar(40) not null,

sede varchar(32) not null,

pais varchar(20) not

null, estado bit);

Cabe señalar que los campos referidos a la sede y al pais pudieron haber sidos tablas

que se relacionen con la tabla de estadio. Lo importante es como hacer mantenimiento

de datos a una tabla, la normalización que se pueda hacer a las tablas que irán

creando en la base de datos campeonatouefa queda para las modificaciones que crean

convenientes.

2. Logremos establecer la conexión con la base de datos de campeonatouefa en el

entorno de NetBeans.

Ing. Mirko Manrique Ronceros Página 39 de 100

Page 40: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

3. Volvamos a la pestaña Proyects donde vamos a crear métodos en la clase Main,

necesarios para la conexión con la base de datos y el enlace con la tabla de

estadio.

Agregamos los paquetes: java.io, java.sql y javax.swing. Este último paquete es

necesario para el uso de los objetos del paquete swing principalmente el JOptionPane

para la visualización de posibles mensajes de error. Estando dentro de la clase Main

establecemos las variables conn del tipo Connection, st del tipo Statement y rs del tipo

ResultSet ya descritos y esplicados en las sesiones anteriores. También definimos las

varibales bd, login, password y url.

A continuación creamos el primer método estático denominado Enlace que devolverá

un objeto del tipo Connection. Este método nos ayudará establecer la conexión con la

base de datos campeonatouefa. Seguimos a continuación agregando más métodos a la

clase Main.

Ing. Mirko Manrique Ronceros Página 40 de 100

Page 41: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Se crea el método sta que devolverá un objeto del tipo Statement. Básicamente

permite crear el objeto del tipo Statement a partir del objeto connection a través

del método createStatement(). Finalmente se necesita tener un método

denominado EnlEst que permitirá enlazarnos con la tabla de Estadio aplicando el

método executeQuery() estableciendo a través del comando select a todos los campos

de la tabla de Estadio solo aquellos cuyo estado es igual a 1, es decir, los estadios que

están habilitados para su uso.

Si observamos en cada uno de los métodos se esta usando throws SQLException, esto

quiere decir que los métodos usan excepciones (intercepcion de errores) para los erroes

que se pueden presentar durante la conexión y acceso de datos.

4. La tabla de Estadio posee realmente cinco campos, pero el último es para indicar si el

estadio esta habilitado para su uso o no lo está, estom quiere decir si hacemos una

elimnación se procederá a cambiar el estado a 0 (elimación lógica) y cada vez que

grabemos los datos de un nuevo estadio se habilitará.

Vamos a diseñar el siguiente formulario al cual lo llamaremos frmMantEstadio

dando los nombres correspondientes a cada uno de los objetos de control

dibujados.

Ing. Mirko Manrique Ronceros Página 41 de 100

Page 42: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

5. Vamos a proceder a programar, colocando las siguientes líneas de código.

Importamos los paquetes java.sql (para acceder a base de datos), javax.swing

(para el uso de los controles visuales), javax.swing.table para el manejo de las clases

del paquete table y el paquete campeonato_uefa que contiene a la clase Main con lo

cual podremos hacer uso de todos los métodos que tenga.

Ing. Mirko Manrique Ronceros Página 42 de 100

Page 43: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Iniciamos la construcción de la clase frmMantEstadio, estableciendo como variables o

atribnbutos conn, st y rs. Como se está utilizando un objeto JTable se define la variable

dtm del tipo DefaulTableModel. En el método constructor hacemos uso del método

activabotones (programación que veremos luego), se establece un vector o arreglo del

tipo String donde se coloca los títulos que serán de cada una de las columnas del objeto

JTable. A partir del método setColumnIdentifiers indicamos los datos del vector titulos

al objeto dtm y con el método setModel vinculamos el objeto dtm al objeto JTable

denominado tablaEstadio. Los métodos setSize y setLocation es para establecer el

tamaño y la localización del formulario en la pantalla del computador.

El método activaBotones es para habilitar o inhabilitar el uso de los botones de

comando, esto dependerá en que circunstancias nos encontremos en la ejecución de

la aplicación de mantenimiento de datos de Estadios. Con el método limpiarDatos se

limpia los cuadros de textos.

Ing. Mirko Manrique Ronceros

Page 44: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

En el botón de comando btnBuscar si está habilitado después de dar clic en dicho botón, se

procederá a la conexión con la base de datos, luego en la variable rs se almacenará los

datos provenientes de la tabla de Estadio. En la variable b se coloca el valor ingresado

en el cuadro de texto txtCodEst. Se define una variable boleana encuentra para manejar

la situación de éxito o fracaso de la búsqueda. En la sentencia while utilizamos el método

next que pertenece al objeto rs, es decir, es un método de la interfaz ResulSet. El

método next devuelve verdadero si encuentra la primera fila de información, las

siguientes veces se desplaza en cada registro almacenado en el rs. La sentencia if que se

encuentra dentro del while, su condición lógica se hará verdadero cuando encuentre el

código de estadio buscado, haciendo que los cuadros de textos se muestren los demás

datos, es entonces que la variable encuentra recién se hace verdadero.

Ing. Mirko Manrique Ronceros

Page 45: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Ing. Mirko Manrique Ronceros

Page 46: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

El botón de comando btnVer (Ver Lista de Estadios), consiste en aumentar el tamaño del

formulario para visualizar el objeto JTable. Posteriormente se establece la conexión con

la base de datos y en la variable rs se almacena los datos provenientes de la

tabla de Estadio. Se define un vector denominado datos de tamaño 5 elementos del tipo

String que servirá colocar los datos de una fila para luego agregarlo al objeto dtm que

está vinculado al objeto JTable llamado tablaEstadio. Pero antes de agregarlo debemos

asegurarnos que no exista fila alguna de datos en el modelo dtm y por ende en la

tablaEstadio. El bucle de la sentencia while permite colocar en cada elemento del

arreglo los datos extraidos de una fila que almacena el objeto rs, esto es posible ya

que el método getString, indicando la posición de la columna, podemos obtener el dato

de la fila actual.

Con el método addRow logramos crear una fila con los datos del vector datos en el

objeto dtm y como está vinculado a la tablaEstadio entonces se podrá ver los registros

agregados.

Para el botón de comando btnNuevo, limpiamos los cuadros de textos con el método

limpiarObjetos. Se inhabilita el cuadro de texto txtCodEst y se envía el cursor al

cuadro de texto txtNom. Se inhabilta los botones de comando a excepción de

grabar ya que estamos en el momento de ingresar nuevos datos y proceder a

almacenar.

Ing. Mirko Manrique Ronceros

Page 47: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Ing. Mirko Manrique Ronceros

Page 48: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

En el botón de comando btnGrabar se inicia visualizando un mensaje de confirmación

para proceder a grabar, esto se logra usando el método showConfirmDialog de la

clase JoptionPane. Si la respuesta es Sí entonces la sentencia if su condición lógica se

hará verdadera y por lo tanto establecemos conexión con la base de datos

campeonatouefa, pasamos los datos ingresados a variables como nom, sede y pais. En

la variable comando establecemos la instrucción con el comando INSERT para luego

usar el método executeUpdate quien procederá a grabar los datos. Posteriormente se

procede a cerrar la conexión con el método close del objeto connection conn.

Ing. Mirko Manrique Ronceros

Page 49: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

En el botón de comando btnEliminar, también se procede a través de un mensaje

confirmar si procede la eliminación de los datos del Estadio. Si la respuesta es afirmativa

se procede a conextarse a la base de datos y en la variable de memoria cod se

almacenada el código del estadio ingresado a travñes del cuadro de texto txtCodEst. Se

construye la instrucción usando el comando UPDATE, luego ejecutamos la eliminación

lógica haciendo que el campo estado sea igual a cero y se cierra la conexión con la

base de datos.

En

el botón de comando btnModificar, al igual que de grabar o eliminar se procede a

confirmar a través de un mensaje si se procede a la modificación de datos. Una vez

salvados los datos ingresados en los cuadros de textos en variables de memoria

se prepara la instrucción en la variable de memoria comando. Usamos el comando

UPDATE para actualizar los datos. Se procede a ejecutar el comando con el método

executeUpdate y se cierra la conexión con el método close.

Ing. Mirko Manrique Ronceros

Page 50: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

En el botón de comando Cancelar, luego de dar respuesta afirmativa se procede a

limpiar los cuadros de textos, habilta el cuadro de texto txtCodEst para su uso y se

vuelve a su estado inicial la hablitación de los botones de comando.

El botón de comando btnCerrar, con el método dispose se cierra la ventana o

formulario.

6. Procedemos a ejecutar el formulario, seleccionado Run File.

7. Observamos el formulario ejecutado.

8. Al dar clic en el botón de comando Nuevo podemos proceder a ingresar datos. Una vez

ingresado damos clic en el botón de comando Grabar.

Ing. Mirko Manrique Ronceros

Page 51: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

9. Luego de grabar, al dar clic en el botón de comando Ver Lista de Estadios, el

formulario se mostrará de la siguiente forma.

Ing. Mirko Manrique Ronceros

Page 52: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

SWING MENUS Y MANTENIMIENTO DE DATOS USANDO VARIAS TABLAS

Los objetos Swing Menus

En todo desarrollo de un proyecto de un sistema informático se debe construir menús que

permita al usuario interaccionar con las opciones del sistema.

Aquí podemos ver el árbol de herencias de las clases relacionadas con los menús:

Tenemos el JmenuBar que permite iniciar el diseño del menú, Se crea por defecto un

objeto Jmenu que permitirá a partir de este crear las opciones, las cuales se crearán con

los objetos JmenuItem.

Ing. Mirko Manrique Ronceros

Page 53: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Mantenimiento de datos usando varias tablas

Esta sesión abarca el desarrollo de un mantenimiento de datos usando más de una tabla

Siguiendo la sesión anterior haremos uso de la base de datos campeonatouefa de MySql,

Usar varias tablas no implica que se deba hacer mantenimiento de datos a todas a la vez.

La base de datos de campeonatouefa ya tiene la tabla de Estadio, agregaremos la tabla de

Equipo. Con las tablas de Estadio y Equipos podremos hacer la programación de los

encuentros, para ello crearemos la tabla de Programacion. Para hacer el mantenimiento

de datos de la tabla de Programación necesitaremos saber qué estadios están disponibles y

cuales son los equipos participantes para el encuentro. Sólo se tendrá en cuenta la

etapa eliminatoria del campeonato.

Vamos a proceder a crear las tablas y luego a construir la aplicación:

1. Creamos las tablas de Equipo usando el entorno de NetBeans.

2. Usando la opción Execute Command escribimos:

3. Ejecutamos la instrucción, luego aplicamos una actualización (Refresh) para Ing. Mirko Manrique Ronceros

Page 54: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

visualizar la nueva tabla.

Posteriormente vemos la nueva tabla en la pestaña Services

4. Nuevamente usando la opción Execute Command, escribimos:

5. Ejecutamos la instrucción, aplicamos Refresh y luego visualizamos la nueva tabla.

Ing. Mirko Manrique Ronceros

Page 55: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

6. Vamos a crear un formulario denominado frmPrincipal, donde diseñaremos el

siguiente menú:

Ing. Mirko Manrique Ronceros

Page 56: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

7. Diseñamos el siguiente formulario que se denominará frmProgramacionPartidos.

Ing. Mirko Manrique Ronceros

Page 57: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

El cuadro de texto referido al numero de programación tiene como nombre txtNroPro,

para la fecha de encuentro txtFecha, para el JComboBox de la etapa de campeonato

tiene como nombre cboEtapa, para el JComboBox referido a grupo se denomina

cboGrupo, para el objeto JList referido al Equipo 1 se llama lstEquipo1, para el objeto

JList referido al Equipo2 se denomina lstEquipo2, para el cuadro de texto de la hora

programada se llama txtHora, para el objeto JcomboBox referido a los estadios se

llama cboEstadios, para el objeto JcheckBox referido a Suspendido se denomina

chkSuspendido y para el objeto JTable se denomina tablaProgramacion.

Finalmente para los botones de

comando que realizarán el mantenimiento de datos de Programación de Partidos se

denominan: btnNuevo, btnBuscar, btnModificar, btnGrabar, btnCancelar y

btnCerrar.

8. Vamos a proceder a agregar los métodos en la clase Main que utilizaremos para el

mantenimiento de datos de la Programación de Partidos.

Para obtener los registros de datos de aquellos encuentros que están programados

Para obtener los equipos que pertenecen a un grupo indicado. Cada grupo debe

estar conformado por 4 equipos.

Ing. Mirko Manrique Ronceros

Page 58: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Para obtener el nombre del equipo dado el código del equipo

Verifica si el encuentro entre un equipo y otro ya fue programado. Esta consulta

construida a partir del comando select utiliza el concepto de subconsultas. Cuando

tratemos el tema de consulta de datos se explicará la construcción de sentencias que

usan varias tablas.

Para obtener el código del equipo dado el nombre del equipo. Este método nos servirá al

momento de grabar datos.

Para obtener el código del estadio dado el nombre del estadio. Este método nos servirá

al momento de grabar o modificar datos.

9. Veamos a continuación el código de la programación que tendrá el formulario

frmProgramacionPartidos.

a. Agregar los paquetes antes de la definción de la clase frmProgramacionPartidos.

Ing. Mirko Manrique Ronceros

Page 59: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

b. Definir los atributos o variables a usar en los distintos métodos que forma la

clase frmProgramacionPartidos

c. El método constructor frmProgramacionPartidos() debe quedar de la siguiente

manera:

Ing. Mirko Manrique Ronceros

Page 60: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

d. Construimos los métodos activaBotones y limpiarObjetos()

e. Diseñamos el método llenarListas() para mostrar los posibles encuentros dado los 4

equipos que conforman un grupo.

f. También se tienen el método llenarTabla() para llenar de datos en la filas del

objeto JTable denominado tablaProgramacion.

Ing. Mirko Manrique Ronceros

Page 61: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

g. Cuando se seleccione una etapa del campeonato, como por ejemplo eliminatoria se

habilitará el uso del objeto jComboBox llamado cboGrupo.

Ing. Mirko Manrique Ronceros

Page 62: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

h. Ahora vamos a proceder a programar en cuando se seleccione el grupo. No se

indicará todo el código ya que codificar para cuando se seleccione el grupo A, lo

mismo sucederá con los demás grupos que conforma la etapa eliminatoria del

campeonato.

Ing. Mirko Manrique Ronceros

Page 63: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

En este último if que observamos hacemos lo mismo para el grupo B y así

sucesivamente hasta el grupo H.

i. El botón de comando Buscar es para la búsqueda de una Programación de un

encuentro, cuya programación es la siguiente.

Ing. Mirko Manrique Ronceros

Page 64: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Continuamos con la programación ....

Ing. Mirko Manrique Ronceros

Page 65: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

j. Cuando se seleccione un equipo en la caja de lista lstEquipo1 se procederá a

buscar si el encuentro ya fue programado o no.

Se hace lo mismo si la selección se hace del equipo en la caja de lista lstEquipo2.

k.

Para el botón de comando Cancelar procedemos a programar lo siguiente:

Ing. Mirko Manrique Ronceros

Page 66: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

l. Para el botón de comando Grabar procedmeos a codificar lo siguiente:

continuamos ...

m. Para el botón de comando Nuevo colocamos el siguiente código:

Ing. Mirko Manrique Ronceros

Page 67: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

n. Para el botón de comando Modificar escribimos el siguiente código:

10. Vamos a proceder a ejecutar el formulario desde el menu.

Ing. Mirko Manrique Ronceros

Page 68: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

MANTENIMIENTO DE DATOS USANDO PROCEDIMIENTOS ALMACENADOS

Procedimientos almacenados

Poco a poco las empresas y muchas personas en general empiezan a mirar más hacia el

Software Libre y se dan cuenta que existen excelentes alternativas a distintos programas

que para ellos son de uso frecuente en otro Sistema Operativo, como pueden ser

OpenOffice, Mozilla Firefox, Eclipse, NetBeans, PostgreSQL, PHP y MySQL por citar algunos,

en esta nota hablaré un poco del Manejador de Bases de datos MySQL, que en los últimos

años ha tenido grandes avances en su desarrollo y actualmente es uno de los DBMS más

usados en sitios web y que en sus últimas versiones ha incorporado nuevas características

como la implementación de las tablas, disparadores, funciones y procedimientos

almacenados. Los procedimientos almacenados son de gran utilidad para realizar tareas

frecuentes en una base de datos, es sorprendente la cantidad de tiempo que se puede

llegar a ahorrar al hacer uso de este mecanismo.

Interface PreparedStatement

Este componente permitirá hacer uso de los procedimientos almacenados. Una vez

instanciado el objeto usaremos el método preparedStatement para invocar el uso de un

procedimiento almacenado. También se hará uso de los métodos setString(), setInt(),

setDate(), etc para indicar la posición del parámetro y el valor de dicho parámetro.

Finalmente usaremos el método executeUpdate() para ejecutar el procedimiento

almacenado.

A continuación, procedemos a diseñar el mantenimiento de datos de la tabla de Arbitro

usando procedimientos almacenados:

1. Creamos la tabla de Arbitro dentro de la base de datos campeonatouefa:

Ing. Mirko Manrique Ronceros

Page 69: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

2. Procedemos a crear el procedimiento almacenado sp_grabaArbitro que permitirá la

grabación de datos cuando se inserte un registro de datos en la tabla de Arbitro.

Una vez ejecutado la creación del procedimeinto almacenado se observará en la

pestaña de Services que dicho procedmiento se ha creado.

3. Luego, procedemos a crear el procedimeinto almacenado sp_modificaArbitro que

permitirá modificar o actualizar los datos de la tabla de Arbitro.

Ing. Mirko Manrique Ronceros

Page 70: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Una vez ejecutado la creación del procedimeinto almacenado se observará en la

pestaña de Services que dicho procedmiento se ha creado.

4. Posteriormente, procedemos a crear el procedmiento almacenado sp_eliminaArbitro

que permitirá hacer una eliminación lógica del registro de datos.

Una vez ejecutado la creación del procedimeinto almacenado se observará en la

pestaña de Services que dicho procedmiento se ha creado.

Ing. Mirko Manrique Ronceros

Page 71: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

5. En el formulario frmPrincipal que contiene el diseño del menú, ubicamos la opción

Arbitro dentro de Mantenimientos.

6. Seleccionado Arbitro y dando clic botón derecho del mouse elegimos

Events/Action/ActionPerformed.

Luego, escribimos el siguiente código:

7. Diseñamos el siguiente formulario denominado frmMantArbitro.

Ing. Mirko Manrique Ronceros

Page 72: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

8. En la clase Main colocar el método EnlArb().

9. Vamos a proceder a programar en el formulario frmMantArbitro colocando las

siguientes líneas de código:

Importamos los paquetes java.sql (para acceder a base de datos), javax.swing

(para el uso de los controles visuales), javax.swing.table para el manejo de las clases

del paquete table y el paquete campeonato_uefa que contiene a la clase Main con lo

cual podremos hacer uso de todos los métodos que tenga.

Preparamos las variables para el acceso de datos: conn, st, rs. En el método

constructor frmMantArbitro() preparamos las columnas del objeto JTable y damos al

formulario su tamaño y ubicación dentro de la pantalla.

Ing. Mirko Manrique Ronceros

Page 73: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Los métodos activaBotones() permitirá gestionar el uso de los botones de comando y el

método limpiarDatos() es para limpiar los cuadros de textos.

Ing. Mirko Manrique Ronceros

Page 74: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

En el botón de comando btnBuscar si está habilitado después de dar clic en dicho

botón, se procederá a la conexión con la base de datos, luego en la variable rs se

almacenará los datos provenientes de la tabla de Arbitro. En la variable b se coloca el

valor ingresado en el cuadro de texto txtCodArb. Se define una variable boleana

encuentra para manejar la situaciçon de éxito o fracaso de la búsqueda. En la sentencia

while utizamos el método next() que pertenece al obejto rs, es decir, es un método

de la interfaz ResulSet.

El método next devuelve verdadero si encuentra la primera fila de información, las

siguientes veces se desplaza en cada registro almacenado en el rs. La sentencia if que

se encuentra dentro del while, su condición lógica se hará verdadero cuando encuentre

el código del árbitro buscado, haciendo que los cuadros de textos se muestren los

demás datos, es entonces que la variable encuentra recién se hace verdadero.

El botón de comando btnVer (Ver Lista de Arbitros), consiste en aumentar el

tamaño del formulario para visualizar el objeto JTable. Posteriormente se establece la

conexión con la base de datos y en la variable rs se almacena los datos

provenientes de la tabla de Arbitro. Se define un vector denominado datos de tamaño 6

elementos del tipo String que servirá colocar los datos de una fila para luego agregarlo al

Ing. Mirko Manrique Ronceros

Page 75: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

objeto dtm que está vinculado al objeto JTable llamado tablaArbitro. Pero antes de

agregarlo debemos asegurarnos que no exista fila alguna de datos en el modelo dtm

y por ende en la tablaArbitro. El bucle de la sentencia while permite colocar en cada

elemento del arreglo los datos extraidos de una fila que almacena el objeto rs, esto es

posible ya que el método getString, indicando la posición de la columna, podemos

obtener el dato de la fila actual.

Con el método addRow logramos crear una fila con los datos del vector datos en el

objeto dtm y como está vinculado a la tablaArbitro entonces se podrá observar los

registros agregados.

Ing. Mirko Manrique Ronceros

Page 76: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

En el botón de comando btnGrabar se inicia visualizando un mensaje de confirmación

para proceder a grabar, esto se logra usando el método showConfirmDialog de la

clase JoptionPane. Si la respuesta es Sí entonces la sentencia if su condición lógica se

hará verdadera y por lo tanto establecemos conexión con la base de datos

campeonatouefa, pasamos los datos ingresados a variables como ape, nom, fecha y

nac. En la variable pstmt establecemos como procedimiento almacenado a

sp_grabaArbitro, colocando 4 signos de interrogación que expresa el manejo de 4

parámetros que tiene dicho procedimiento. Con los métodos setString() del objeto

instanciado pstmt indicamos la posición del parámetro y el valor del parámetro, así por

ejemplo: 1 indica ser el primer parámetro de entrada del procedimeinto almacenado

sp_grabaArbitro y ape contiene el dato apellido que se asignará al primer

parámetro. Una vez indicado los valores a cada uno de los parámetros se hace uso del

método executeUpdate() que permitirá ejecutar el procedimiento almacenado.

Posteriormente se procede a cerrar la conexión con el método close del objeto

connection conn.

Para el botón de comando btnNuevo, limpiamos los cuadros de textos con el método

limpiarObjetos. Se inhabilita el cuadro de texto txtCodArb y se envía el cursor al cuadro

de texto txtNom. Se inhabilta los botones de comando a excepción de grabar.

Ing. Mirko Manrique Ronceros

Page 77: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

En el botón de comando btnEliminar, también se procede a través de un mensaje

confirmar si procede la eliminación de los datos del Estadio. Si la respuesta es afirmativa

se procede a conectarse a la base de datos y en la variable de memoria cod se

almacenada el código del árbitro ingresado a través del cuadro de texto txtCodArb. En

la variable pstmt establecemos como procedimiento almacenado a sp_eliminaArbitro,

colocando un signo de interrogación que expresa el manejo de un sólo parámetro, luego

se usa el método setInt() para indicar el valor del parámetro y posteriormente se cierra

la conexión.

Ing. Mirko Manrique Ronceros

Page 78: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

En el botón de comando btnModificar, al igual que de grabar o eliminar se procede a

confirmar a través de un mensaje si se procede a la modificación de datos. Una vez

salvados los datos ingresados en los cuadros de textos en variables de memoria

se procede a utilizar el procedimiento almacenado sp_modificaArbitro. Usamos el

comando UPDATE para actualizar los datos. Se procede a ejecutar el comando con el

método executeUpdate y se cierra la conexión con el método close.

En el botón de comando Cancelar, luego de dar respuesta afirmativa se procede a

limpiar los cuadros de textos, habilta el cuadro de texto txtCodArb para su uso y se

vuelve a su estado inicial la hablitación de los botones de comando.

El botón de comando btnCerrar, con el método dispose se cierra la ventana o

formulario.

10. Procedemos a ejecutar el formulario desde el menú.

Ing. Mirko Manrique Ronceros

Page 79: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

TRANSACCIONES Y BUSQUEDAS CON BASE DE DATOS

Transacciones con Base de Datos

Uno concepto que causa problemas a los principiantes en el mundo del desarrollo de

aplicaciones de base de datos es la idea de transacciones. Fundamentalmente, una

transacción representa una unidad de trabajo lógica. Como la principal responsabilidad de

una base de datos es preservar la información, necesita tener algo que le indique a un

usuario que se debe salvar el estado actual del programa. De igual forma, cuando las cosas

han ido mal, necesita una forma para indicar que una base de datos debería ignorar el

estado actual y volver a atrás, al estado del programa salvado anteriormente.

En el idioma de las bases de datos, estas funciones se llaman entregar una transación y

deshacer una transación, respectivamente. Para realizar estas tareas, el API JDBC

incluye dos métodos como parte del interface Connection. Dando un objeto Connection

llamado con, el estado del programa se graba llamando a con.commit(), para volver al

estado salvado anteriormente, con.rollback(). Estos dos métodos pueden lanzar

SQLExceptions si algo va mal cuando la base de datos realice realmente la operación, por

eso necesitamos envolverlos en bloques try ... catch. Por defecto, una conexión funciona en

modo autocommit, es decir, cada vez que se ejecuta una sentencia SQL se abre y se cierra

automáticamente una transacción, que sólo afecta a dicha sentencia. Es posible modificar

esta opción mediante setAutoCommit(), mientras que getAutoCommit() indica si se está en

modo autocommit o no. Si no se está trabajando en modo autocommit será necesario que

se cierren explícitamente las trasancciones mediante commit() si tienen éxito, o roolback().

En un entorno mono-usuario, las transaciones son bastantes sencillas de entender --

simplemente implican salvar o deshacer el estado de una aplicación. Sin embargo, en modo

multi-usuario, las transaciones son más complejas. La demostración clásica de una

transación multi-usuario es una cuenta bancaria donde una aplicación está intentando hacer

un cargo mientras otra aplicación está intentando hacer un depósito en la misma cuenta. En

el caso del campeonatouefa al momento de ingresar los datos de las incidencias de un

encuentro o partido tendremos que grabar dos registros uno de cada equipo, esto quiere

decir que no se debe permitir grabar las incedencias de un equipo y las incendencias del

otro equipo no.

Ing. Mirko Manrique Ronceros

Page 80: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Búsquedas de datos con procedimientos almacenados usando

CallableStatement

Para las búsquedas y/o obtenciones de datos vamos a usar procedimientos almacenados.

La novedad con el uso de los procedimientos almacenados es hacer uso de parámetros

de salida. En esta oportunidad usaremos el interface CallableStatement que permitirá

trabajar con procedimeintos almacenados que hacen uso del comando select. Vamos a

usar el procedimiento almacenado sp_obtenerCodEquipo:

A continuación, procedemos a diseñar el proceso de Incidencias de un Encuentro o

Partido usando procedimientos almacenados con la interfaz

CallableStatement y transacciones:

1. Creamos la tabla de Incidencias dentro de la base de datos campeonatouefa:

Ing. Mirko Manrique Ronceros

Page 81: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Luego de ejecutar la sentencia, hacemos una actualización usando Refresh.

Observaremos la nueva tabla creada.

2. Procedemos a crear el procedimiento almacenado sp_actualizaIncidencias que

permitirá la grabación de datos cuando se inserte un registro de datos en la tabla de

Incidencias.

Luego de ejecutar la sentencia, hacemos una actualización usando Refresh

Ing. Mirko Manrique Ronceros

Page 82: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Observaremos el nuevo procedimiento creado

3. Posteriormente creamos el procedimiento alcenado sp_modificaIncidencias que

permitirá modificar los datos de la tabla de Incidencias.

Luego de ejecutar la sentencia, hacemos una actualización usando Refresh

quedando la pestaña Services:

Ing. Mirko Manrique Ronceros

Page 83: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

4. No olvidar de agregar el procedimeinto almacenado sp_obtenerCodEstadio (ver la

segunda pagina de ésta sesión).

5. En la clase Main agregamos los siguientes métodos:

Ing. Mirko Manrique Ronceros

Page 84: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Este método nos ayudará a llenar de datos en el objeto JTable del diseño de

formulario frmIncidenciasEncuentro.

Este método permitirá buscar las incidencias ocasionadas por los dos equipos de un

encuentro dado el número de programación.

6. En el formulario frmPrincipal que contiene el diseño del menú, ubicamos la opción

Incidencias dentro de Procesos.

7. Seleccionando incidencias del Encuentro y dando clic con el botón derecho del

mouse elegimos Events/Action/ActionPerformed.

Luego, escribimos el siguiente código:

Ing. Mirko Manrique Ronceros

Page 85: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

8. Diseñamos el siguiente formulario denominado frmIncidenciasEncuentro.

9. Vamos a proceder a programar en el formulario frmIncidenciasEncuentro colocando

las siguientes líneas de código:

Importamos los paquetes java.sql (para acceder a base de datos), javax.swing

(para el uso de los controles visuales), javax.swing.table para el manejo de las clases

del paquete table y el paquete campeonato_uefa que contiene a la clase Main con

lo cual podremos hacer uso de todos los métodos que tenga.

Ing. Mirko Manrique Ronceros

Page 86: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Preparamos las variables para el acceso de datos: conn, st, rs. La variable graba es para

saber si se va a grabar las incidencias (true) o se va a modificar las incidencias (false). Con

la variable dtm es para el manejo del objeto Jtable.

Ing. Mirko Manrique Ronceros

Page 87: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

En el método constructor frmIncidenciasEncuentro() preparamos las columnas del

objeto JTable y llenamos de datos usando el método VistaProgramacion().

También damos al formulario su tamaño y ubicación dentro de la pantalla

El método limpiarTextos() es dejar en blanco los cuadros de textos.

Ing. Mirko Manrique Ronceros

Page 88: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Programar en el evento MouseClicked ea para que el usuario seleccione una

programación de partido se muestre las incidencias ocurridas en el encuentro.

Dado el número de la programación y usando el método BuscaProgIncidencias(), se

puede lograr encontrar las incidencias del partido. Si se encuentra las incidencias

se debe tener dos registros almacenados en la variable rs referido a las incidencias del

equipo local y del equipo visitante. Con el método next() de ResultSet se accede a

cada uno de los registros y con el método getString() sacamos los datos de cada

fila de datos y lo asignamos a cada uno de los cuadros de textos. Si no hubiera

incidencias del partido programado entonces los cuadros de textos estarían habilitados

para el ingreso de los datos de las incidencias.

Programar en el evento FocusLost permitirá asignarle los goles a favor que tiene el

equipo local como goles en contra al equipo visitante ó asignarle los goles en

contra del equipo local como goles a favor del equipo visitante.

Ing. Mirko Manrique Ronceros

Page 89: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Ing. Mirko Manrique Ronceros

Page 90: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

V

a

m

o

s

explicando lo más resaltante de la programación del botón de comando Actualizar. Si la

variable pública graba viene con el valor True se procede a invocar un mensaje de

conformación. Si la respuesta es afirmativa capturamos en la variable de memoria

nropro el número de la programación. A continuación viene el inicio de una transacción, que

a través del método setAutoCommit() al ponerle el valor de false dentro del paréntesis

estamos indicando a la conexión que no se procederá a terminar la transacción hasta que se

use el método commit().

Ing. Mirko Manrique Ronceros

Page 91: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Viene el uso de la variable cstmt instanciado de la clase CallableStatement que permitirá

ejecutar un procedimiento almacenado. El procedemiento almacenado a usar se llama

sp_obtenerCodEquipo que posee un parámetro de entrada y otro de salida. El valor del

primer parámetro lo indicamos con el método setString() y como el segundo parámetro es

de salida se hace uso del método registerOutParameter() indicando el tipo de dato que es

entero. Con el método execute() se ejecuta el procedimeinto almacenado y para obtener el

valor del parámetro de salida usamos el método getInt() debido que el parámetro es de

tipo entero. Posteriormente se asignan a las variables los datos que se usarán para la

grabación de datos, para lo cual se usará el procedimiento almacenado

sp_actualizaIncidencias. Lo mismo hacemos con las incidencias del equipo visitante, se

asignan a las variables de memoria respectivas y nuevamente se procede a usar el

procedimiento almacenado sp_actualizaIncidencias. Luego procedemos a hacer uso del

método commit() a través del objeto conn que permitirá terminar la transacción.

En el caso de que la variable graba sea False, entonces se procederá hacer casi lo mismo

sino que esta véz se usará el procedimiento almacenado sp_modificaIncidencias para

modificar los datos.

El botón de comando btnCerrar, con el método dispose se cierra la ventana o

formulario.

10. Procedemos a ejecutar el formulario desde el menú.

Ing. Mirko Manrique Ronceros

Page 92: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

CONSULTA DE DATOS USANDO EL OBJETO JTABLE

Objeto de control JTable y métodos del interface ResulSet

El objeto Jtable constituirá en el componente de visualización de los datos obtenidos a partir

de una consulta realizada ala base de datos. En sesiones anteriores hemos contemplado el

manejo del TableModel (modelo) como también sus principales métodos. Generalmente

cuando se realiza una consulta a una base de datos se traen “todos” los registros, lo cual

funciona con conjuntos de tamaño razonable, pero con mas de 3000 registros ya puede traer

problemas de performance, o de memoria.

Lo mejor en estos caso es paginar, y lo bueno es que JDBC proporciona ciertas

facilidades, como la función para saltar a un registro determinado “absolute()”.

Aquí hay un ejemplo completo, se le entrega el número de página, y la cantidad de filas, y

retorna un arreglo con los registros. Esta implementación mejora considerablemente el

desempeño (performance) de la consulta (query), debido que el conjunto resultado (result

set) que se recorre, y maneja es mucho menor.

El ejemplo también sirve para ver como se debe hacer una consulta a la base de datos en

Java, con JDBC, ya que implementa otras recomendaciones comunes, como el uso de

“prepared statement”, que también optimiza la ejecución de las consultas, precompilando el

query en la Base de Datos, y manteniendolo en “cache” para futuras ejecuciones.

Veamos a continuación como se podría hacer una consulta a los datos de la tabla de Estadio y

almacenarlos en un arreglo.

Ing. Mirko Manrique Ronceros

Page 93: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Con respecto al uso de los métodos de un ResultSet, lo más utilizados son:

● public abstract boolean next() throws SQLException

Un objeto de tipo ResultSet puede contener más de un resultado. Para ir

avanzando por la lista de resultados utilizamos este método, que devuelve un valor

verdadero indicando si existe otro resultado o falso cuando ya no existe registro o fila

alguna.

● public abstract String getString(int columnIndex) throws SQLException

● public abstract String getString(String columnName) throws SQLException

● public abstract int getInt(int columnIndex) throws SQLException

● public abstract int getInt(String columnName) throws SQLException

Para recuperar los datos contamos con muchas opciones. Todos los métodos

funcionan de la misma manera. Toman como parámetro el índice o el nombre del

campo que se desea obtener y devuelven el dato en cuestión.

● public abstract void close() throws SQLException

Libera los recursos asociados al ResultSet.

Ing. Mirko Manrique Ronceros

Page 94: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Consulta de Datos usando PreparedStatement

En esta oportunidad vamos a utilizar el interface PreparedStatement para preparar la

consulta, cuya ejecución devolverá los resultados a un objeto ResultSet.

Seguimos usando la base de datos campeonatouefa, construyendo en esta oprtunidad una

consulta que muestre los jugadores que pertenecen a un equipo seleccionado.

Para diseñar y desarroller la aplicación seguiremos los siguientes pasos:

1. En la clase Main agregamos el siguiente método denominado BuscaJugEquipo:

El método BuscaJugEquipo se inicia invocando al método sta() que a su vez utiliza el

método Enlace(), este último establece la conexión con la base de datos, por lo tanto

el objeto conn deja de ser null y contiene la información necesaria de la conexión con

la base de datos campeonatouefa. Se declara la variable cad de tipo String, que

contiene una consulta que por cierto es una subconsulta ya que contiene más

de una sola vez el uso del comando select. Esta consulta lo que busca es obtener los

datos de los jugadores que pertenecen a un equipo. Luego se declara y se construye

una variable objeto ps del tipo PreparedStatement que a partir del objeto conn de

tipo Connection se indica la sentencia select a ejecutar. Como la sentencia select tiene

un signo ? que indica que falta darle un valor, entonces se procede a usar el método

setString() donde el parámetro nomequi contiene el valor o dato a reemplazar en ?.

Se ejecuta la consulta usando el método executeQuery(), cuyo resultado se

almacena en el objeto ResultSet llamado rs.

También en la clase Main debe estar el método EnlEqui():

Ing. Mirko Manrique Ronceros

Page 95: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Este método nos permitirá obtener los datos de los Equipos habilitados para el

campeonato.

2. En el formulario frmPrincipal que contiene el diseño del menú, ubicamos la opción

Jugadores por Equipo dentro de consultas.

Seleccionando Jugadores por Equipo y dando clic con el botón derecho del mouse

elegimos Events/Action/ActionPerformed

Luego escribimos el siguiente código:

3. Diseñamos el siguiente formulario denominado frmConsJugEqui.

Ing. Mirko Manrique Ronceros

Page 96: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

4. Vamos a proceder a programar en el formulario frmConsJugEqui colocando las siguientes

líneas de código:

Importamos los paquetes java.sql (para acceder a base de datos), javax.swing (para el

uso de los controles visuales), javax.swing.table para el manejo de las clases del paquete

table y el paquete campeonato_uefa que contiene a la clase Main con lo cual podremos

hacer uso de todos los métodos que tenga.

Ing. Mirko Manrique Ronceros

Page 97: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Se define las variables objeto conn, st, rs del tipo Connection, Statement y

ResultSet inicializando como null. La variable objeto dtm es del tipo

DefaultTableModel para el manejo del objeto Jtable tablaConsulta.

Establecemos con los métodos setSize() y setLocation() el tamaño y la localización

del objeto formulario. Con la variable arreglo llamado titulos de tipo String, almacenamos los

títulos de cada uno de las columnas. Con el método setColumnIdentifiers() damos el

arreglo titulos para establecer los titulos de cada columna que maneja el modelo dtm. Con el

método setmodel() vinculamos el modelo al objeto Jtable tablaConsulta. En el bloque try

iniciamos con establecer la conexión con la base de datos campeonatouefa. Una vez que se

tienen la conexión procedemos a ejecutar el método EnlEqui() que se encuentra en la clase

Main que permitirá obtener todos los equipos. Con el método next() se ubica al primer

registro de los resultados devueltos por el método EnlEqui(), de ahí cada vez que usemos el

método next() se desplazará al siguiente registro. Cuando el método next() devuelva falso

terminará la ejecución de la setencia repetitiva while. En cada desplazamiento se agregará al

objeto JcomboBox denominado cboEquipos el nombre del equipo.

Ing. Mirko Manrique Ronceros

Page 98: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

Se declara la variable nomequi de tipo String, f e i de tipo int. En la variable nomequi

se almacena el nombre del equipo seleccionado del objeto JComboBox denominado

cboEquipos. El método getSelectedItem() obtiene el nombre del equipo elegido

pero lo extrae de tipo Object y al anteponerle la expresión (String) se comporta como

dato de tipo String y lo asigna a la variable nomequi. En el bloque try establecemos la

conexión con la base de datos campeonatouefa y ejecutamos el método

BuscaJugEquipo() perteneciente a la clase Main que devolverá los datos de los jugadores

pertenecientes al equipo seleccionado. Se declara e instancia un arreglo denominado

datos[] que permitira guardar los datos

de un jugador encontrador en la variable rs, pero antes nos aseguramos que no exista

fila alguna en el objeto JTable tablaConsulta. La sentencia repetitiva while y usando el

método next() del objeto rs es para ubicarnos en la primera fila y en las siguientes filas

de los resultados devueltos por el método BuscaJugEquipo(). En cada interación se

agregará una fila en el objeto tablaConsulta a través del modelo dtm usando el método

addRow().

Ing. Mirko Manrique Ronceros

Page 99: Tecnologia Cliente Servidor Con Java

Universidad Nacional del SantaFacultad de Ingeniería Tecnología Cliente–Servidor con JavaE.A.P. Sistemas e Informática

El botón de comando btnCerrar, con el método dispose se cierra la ventana o formulario.

5.

Procedemos a ejecutar el formulario desde el menú.

Ing. Mirko Manrique Ronceros