Está en la página 1de 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 Edicin

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

INDICE
Introduccin

02

Programacin Cliente Servidor

03

Herramientas para la Programacin Cliente Servidor

04

Arquitectura Cliente Servidor

06

Conectividad a la Base de Datos con JDBC

08

Uso del Entorno Netbeans para conexin 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, Mens y mantenimiento de datos usando varias tablas

50

Mantenimiento de datos usando procedimientos almacenados

66

Transacciones y Bsquedas con base de datos

77

consulta de datos usando el objeto JTable

90

Ing. Mirko Manrique Ronceros

Pgina 2 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

INTRODUCCION
La tecnologa 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 algn lugar de una red, que proporciona informacin segn
se le solicite. Mientras que un cliente funciona en su computadora local, se comunica
con el servidor remoto y pide a ste informacin.
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 impresin 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
tambin la tecnologa Cliente/Servidor, aunque aaden aspectos nuevos y propios a la
misma.
Los servidores web quizs 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 tecnologa Cliente/Sevidor, el servidor Web aporta
ventajas adicionales a un servidor tradicional.

El

presente documento Tecnologa

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 presentacin y estudio de las interfaces visuales a travs de Java como
lenguaje de programacin. 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

Pgina 3 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

Programacin Cliente - Servidor


Java es un nuevo lenguaje de programacin, como tantos otros. As que uno se pregunta el
por qu del revuelo que se ha formado con su aparicin. La respuesta no es inmediatamente
obvia si se observa el asunto desde el punto de vista de la programacin tradicional, porque
aunque resuelve algunos de los problemas tpicos de este tipo de programacin, lo que
verdaderamente es importante es que tambin resuelve los problemas que se generan en
Internet, en la Telaraa 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 informacin, que se desea distribuir bajo demanda a un
conjunto de personas o mquinas.
La clave de este concepto radica en que si se produce un cambio en la informacin del
sistema central, inmediatamente es propagada a los receptores de la informacin, a la
parte cliente. Luego, el concepto bsico 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 nmero de clientes. El
funcionamiento de la Web sigue este mismo principio. Inicialmente, se solicita una
informacin a un servidor y ste enva de vuelta un fichero que ser interpretado por el
navegador (el cliente) que lo formatear para visualizarlo en la mquina cliente. El
navegador fue el primer paso adelante en la expansin de Internet, ya que permita
visualizar un mismo fichero en plataformas diferentes sin hacerle cambio alguno; pero su
finalidad principal es la visualizacin 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 caractersticas y
libreras que resuelven elegantemente problemas que son muy difciles en la programacin
tradicional como el acceso a bases de datos, el uso de multihilo, la programacin de redes y
la programacin distribuida, y adems porque Java, a travs de los applets, permite la
programacin de la parte cliente. Un applet es un miniprograma que corre solamente bajo
un navegador y es descargado automticamente como parte de una pgina Web, al igual
que cualquier grfico, y cuando se activa, ejecuta un programa. Este es el inters,
proporciona una forma a travs 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 versin de ese software, se actualice cuando se actualice.
Adems, tal como est diseado 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

Pgina 4 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

Herramientas para la Programacin Cliente - Servidor:


Tenemos:
Sockets

Implementados en todos los sistemas operativos modernos.

Comunican dos procesos que pueden estar alojados en dos mquinas diferentes.

El cliente debe conocer la mquina y el puerto donde se ubica el servidor.

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


aplicacin.

RPCs

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

Sigue siendo necesaria la distincin del cdigo cliente y del cdigo servidor.

Alternativas para desarrollo de aplicaciones:

1. CORBA:
Es necesario que exista una versin de CORBA para la plataforma donde se quiere
implementar.
Ventajas:

Soporta mltiples plataformas y lenguajes de programacin.

Dispone de una gran cantidad de servicios

Definida por un organismo serio e independiente

Incovenientes:

Complejidad en el desarrollo

Lentitud para adaptarse

Pocas implementaciones libres.

2. NET
Ventajas:
Soporta mltiples plataformas
Fcil proceso de desarrollo (Visual Studio .Net)
Entorno Windows muy extendido.
Buen marketing
Inconvenientes:
Exclusiva del sistema operativo Windows
Propia de Microsoft
Casi ninguna implementacin libre.

Ing. Mirko Manrique Ronceros

Pgina 5 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

3. JAVA EE
Ventajas:
Soporta para mltiples plataformas y sistemas operativos
Avalado por mltiples 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 Lgico:
Gestor de presentacin: Muestra la interface del usuario.
Lgica de Presentacin: Establece que se debe mostrar al usuario.
Lgica de la Aplicacin: Funcionalidad de la aplicacin.
Lgica

de

Negocio:

Funcionalidad

de

la

empresa,

comn

para

todas

las

aplicaciones.
Lgica de los datos: Definicin lgica de los datos (vistas, tablas, tipos de datos,
claves, etc.)
Gestor de Datos: Encargada de escribir y acceder a la base de datos.

Modelo Fsico:

1 capa (Sistema monoltico, no es realmente una aplicacin C/S)

Ing. Mirko Manrique Ronceros

Pgina 6 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

2 capas (Cliente Servidor tradicional)

3 capas (Cliente Lgica Negocio Datos)

Tecnologa ClienteServidor con Java

El modelo de 3 capas esta basado en objetos:

Clientes: Que son aplicaciones propias

Lgica de Negocio y de Datos: Objetos distribuidos

Tambin est basado en la WEB:

Clientes: Navagadores

Lgica de Negocio y de Datos: Generacin dinmica de contenidos en lenguaje HTML,


XML, xHTML.

Ing. Mirko Manrique Ronceros

Pgina 7 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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 programacin para los desarrolladores de Java que escriben los programas que
tienen acceso a la informacin guardada en bases de datos, hojas de calculo, y archivos
"planos". JDBC se utiliza comnmente para conectar un programa del usuario con una base
de datos por detrs de la escena, sin importar qu software de administracin 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 estndar
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 genricas en Windows utilizan las llamadas ODBC.
Con JDBC ocurre exactamente lo mismo: JDBC es una especificacin de un conjunto de
clases y mtodos de operacin que permiten a cualquier programa Java acceder a sistemas
de bases de datos de forma homognea. Lgicamente, al igual que ODBC, la aplicacin 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 comunicacin 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, hara que las
aplicaciones Java tambin perdiesen la portabilidad. Y adems, ODBC tiene el inconveniente

Ing. Mirko Manrique Ronceros

Pgina 8 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
Tecnologa ClienteServidor con Java
E.A.P. Sistemas e Informtica
de que se ha de instalar manualmente en cada mquina; al contrario que los drivers
JDBC,

que

al

estar

escritos

en

Java

son

automticamente

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
operacin 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 continuacin vemos los modelos diferentes de acceso a base de datos:
Modelo de 2 capas
El presente modelo se basa en que la conexin se presenta entre la aplicacin 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 aplicacin Java
propiamente dico y una aplicacin 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 mquina y se accede a ella
mediante la red. Esta es la configuracin de tpica Cliente/Servidor: el programa cliente
enva instrucciones SQL a la base de datos, sta las procesa y enva los resultados de
vuelta a la aplicacin
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 travs de la red, con la mquina donde reside la base de datos.

Ing. Mirko Manrique Ronceros

Pgina 9 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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


encuentra junto al servidor de aplicaciones, esto hace que la mquina 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.
Clasificacin de los Drivers
El driver JDBC puede pertenecer a una de las siguientes categoras:
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 conversin correspondiente de los resultados.

Ing. Mirko Manrique Ronceros

Pgina 10 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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
configuracin 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 librera nativa del
fabricante del sistema DBMS (como pudiera ser DB-Library para Microsoft SQL Server o CTLib para Sybase SQL Server). Este driver es un driver

100% Java pero an as

necesita la existencia de un cdigo binario (la librera DBMS) en la mquina 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 solucin
100% Java y, por lo tanto, independiente de la mquina en la que se va a ejecutar
el programa

Ing. Mirko Manrique Ronceros

Pgina 11 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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 mtodo es
inmediata: el programa que se ejecuta en el cliente, y aparte de las ventajas de los drivers
100% Java, tambin 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 continuacin:
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 despus de importar el paquete
java.sql consiste en cargar el controlador JDBC, es decir un objeto Driver especfico para
una base de datos que define cmo se ejecutan las instrucciones para esa base de datos
en particular.
Hay varias formas de hacerlo, pero la ms sencilla es utilizar el mtodo 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

Pgina 12 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

Debe tenerse en cuenta que el mtodo esttico forName() definido por la clase Class genera
un objeto de la clase especificada. Cualquier controlador JDBC tiene que incluir una parte
de iniciacin esttica que se ejecuta cuando se carga la clase. En cuanto el cargador de
clases carga dicha clase, se ejecuta la iniciacin esttica, que pasa a registrarse como un
controlador JDBC en el DriverManager.
Es decir, el siguiente cdigo:
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 automticamente 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 explcita:
Class.forName("Controlador JDBC").newInstance();
De nuevo, para el Connector/J:
Class.forName("com.mysql.jdbc.Driver").newInstance();
En toda aplicacin de bases de datos con MySQL es indispensable poder establecer la
conexin al servidor para posteriormente enviarle las consultas. Los programas en Java
no son la excepcin. El siguiente cdigo nos servir para verificar que podemos
establecer una conexin 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(Conexin a la base de datos +bd+... OK);
conn.close();
}
Ing. Mirko Manrique Ronceros

Pgina 13 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
Tecnologa ClienteServidor con Java
E.A.P. Sistemas e Informtica
}
catch(SQLException ex)
{
System.out.println(ex);
}
catch(ClassNotFoundException ex)
{
System.out.println(ex);
}
}
}
En esta programacin 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

variables

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


contrasea o password y el url.
Una vez en el mtodo principal llamado main se declara la variable objeto conn y a travs de
la instruccin try se busca proteger la ejecucin ante posibles errores (lo que se denomina
manejo de excepciones).
Con la instruccin: Class.forName(com.mysql.jdbc.Driver).newInstance();, se establece el
driver para el gestor de base de datos MySql. Luego en la siguiente lnea de
programacin se establece la conexin con la base de datos a travs del mtodo
getConnection perteneciente a la clase DriverManager. A travs de la sentencia selectiva if
se evala el xito de la conexin, por lo tanto, si la variable conn es diferente de null
significa que se logr la conexin, caso contrario se mostrar mensajes de error, gracias a la
instruccin catch.
A continuacin se listan algunas de las salidas que se pueden obtener al ejecutar el
programa anterior:
[blueman@casita]$ java TestConnection
Conexin 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

Pgina 14 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

(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

Pgina 15 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

USO DEL ENTORNO DE NETBEANS PARA LA


CONEXIN DE BASE DE DATOS
Conector a la base de datos
Una aplicacin en Java para que logre comunicarse con una base de datos usando la API JDBC,
se requiere de un conector. Ese conector es especfico 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 versin 5.0 para dicho conector. NetBeans nos permite la
tarea de conectar una aplicacin a una base de datos
Conexin de una Aplicacin a una base de datos creada en MySql
Para conectar a una aplicacin a una base de datos, se requiere:

1.

Agregarle a NetBeans el conector como una biblioteca o librera. Esto permite que el
conector este disponible para los proyectos.

2.

Agregarle a un proyecto el conector. Esto permite que la aplicacin se pueda conectar a la


base de datos.

A continuacin procedemos agregarle a NetBeans un conector a una base de datos MySql:


a.

Seleccione la opcin Tools/Libraries de la barra de men del entorno de NetBeans.

Ing. Mirko Manrique Ronceros

Pgina 16 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

b.

Tecnologa ClienteServidor con Java

Se visualiza un
cuadro

de

dilogo

que

permite
administrar

las

libreras

bibliotecas

de

NetBeans. En la
ventana, al lado
izquierdo

se

observa

las

libreras
agregadas

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 botn de comando New Library ...

a. Se mostrar un cuadro de dilogo donde se establecer el nombre que daremos al


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

b. Se

cierra

dilogo

el

cuadro

volvemos

de

la

ventana anterior donde se


observar la nueva librera
MySQL.

Posteriormente

procedemos a dar clic en el


botn

de

comando

Add

JAR/Folder ...

Ing. Mirko Manrique Ronceros

Pgina 17 de 100

c.

Universidad Nacional del Santa


Facultad de Ingeniera
Tecnologa ClienteServidor con Java
E.A.P. Sistemas e Informtica
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 sealar que en las
ltimas versiones de NetBeans ya existe una librera o biblioteca para la conexin a una
base de datos de MySql, denominada MYSQL JDBC Driver.

Damos click en el botn de comando Ok y vamos a crear un proyecto:

1) Seleccionamos la opcin File/New Proyect de la barra de men del entorno de


NetBeans.

Ing. Mirko Manrique Ronceros

Pgina 18 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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


click en el botn de comando Next.

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


clic en el botn de comando Finish, quedando el entorno de NetBeans de la siguiente
manera:

Ing. Mirko Manrique Ronceros

Pgina 19 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

4) En Libraries lo seleccionamos y damos clic con el botn de derecho y eligimos la


opcin Add Library.

5) Aparece un cuadro de dilogo para seleccionar la librera 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 librera agregada.

Ing. Mirko Manrique Ronceros

Pgina 20 de 100

7)

Universidad Nacional del Santa


Facultad de Ingeniera
Tecnologa ClienteServidor con Java
E.A.P. Sistemas e Informtica
Ahora procedemos a la concexin 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

pestaa Services y en
Databases seleccionamos
la carpeta Drivers.

8) Para agregar el concetor MySQL, haga clic en el botn derecho del mouse en el
nodo o carpeta Drivers y seleccione la opcin New Driver.

9) Aparecer el cuadro de dilogo para agregar un conector. Dar clic en el botn de


comando Add.

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


Ing. Mirko Manrique Ronceros

Pgina 21 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

11) En el cuadro de dilogo para agregar el conector se mostrar la informacin del


conector seleccionado. Luego dar clic en el botn de comado OK.

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

Ing. Mirko Manrique Ronceros

Pgina 22 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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


Seleccionamos el driver MySQL y damos clic botn derecho y elegimos la opcin
Conecting using.

14) Se muestra un cuadro de dilogo para establecer el URL de la base de datos usando
el siguiente formato:
jdbc:mysql://servidor:puerto/baseDatos
donde servidor es la direccin 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 botn de comando OK. A continuacin aparecer una ventana
confirmando la conexin con la base de datos de campeonatouefa. Luego damos clic
en el botn de comando OK.

Ing. Mirko Manrique Ronceros

Pgina 23 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

16) En el entorno de NetBeans se mostrar un nuevo nodo de conexin 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

Pgina 24 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Ing. Mirko Manrique Ronceros

Tecnologa ClienteServidor con Java

Pgina 25 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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 conexin a la base

de datos.

2.

Observamos en la figura anterior las

carpetas
Views

referidas
(vistas)

Tables
y

(tablas),

Procedures

(procedimeintos). Si expandimos el nodo


referido a Tables veremos la tabla estadio.

Ing. Mirko Manrique Ronceros

Pgina 26 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica
3.

Tecnologa ClienteServidor con Java

Si seleccionamos el nodo referido a Tables y damos clic botn derecho, se muestra un

men flotante y luego elegimos la opcin 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 botn de comando
OK.

5.

Volvemos al entorno de NetBeans y observamos en la pestaa de Services la


nueva tabla de Equipo.

Ing. Mirko Manrique Ronceros

Pgina 27 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

6.

Tecnologa ClienteServidor con Java

Si deseamos insertar un registro a una de las tablas a travs del comando insert,
seleccionamos el nodo referido a Tables. Dando clic botn derecho se muestra un men
flotante y luego seleccionamos la opcin Execute Command...

7.

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


procedemos a ejecutarlo.

Ing. Mirko Manrique Ronceros

Pgina 28 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica
8.

Tecnologa ClienteServidor con Java

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

Como vern 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 grfico que nos ofrece
NetBeans.

Ing. Mirko Manrique Ronceros

Pgina 29 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

Paquete Java.SQL para trabajar con base de datos


Para realizar una aplicacin para que realice cualquier operacin de lo ms sencilla
posible se necesita de la utilizacin 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 ms importantes clases o interfases y en la medida en que se desarrolle las
sesiones se detallarn ms mencionando los mtodos que tienen para hacer fcil el
acceso a la base de datos.
La clase DriverManager , permite llevar a cabo una conexin con la base de datos
logrando cargar un driver. Existen varios mtodos 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 mtodos recibe como parmetro la direccin URL que identifica la
base de datos. En el caso en que sea necesario proporcionar un usuario y una
contrasea para acceder a la base de datos (como sucede en MySql) se utiliza el
segundo de los mtodos. Una direccin URL JDBC proporciona un mtodo de
localizacin 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

partir

de

la

informacin

contenida

en

la

direccin URL JDBC de la misma, por lo que son los desarrolladores los que fijan en la
mayora de los casos la sintaxis.
La interfaz Connection, cuando se utiliza uno de los mtodos anteriormente
mencionados se obtiene un objeto de tipo Connection que representa como es de
esperar la conexin con la base de datos. El objeto obtenido cuenta con varios mtodos.
Dos de los ms importantes son:
public abstract Statement createStatement() throws SQLException
public abstract void close() throws SQLException
El primero de los mtodos sirve para crear un objeto del tipo Statement. Las frases SQL
se ejecutan normalmente mediante la utilizacin 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 conexin es una operacin costosa, por lo que tampoco se debe estar abriendo
y cerrando la conexin con frecuencia.

Ing. Mirko Manrique Ronceros

Pgina 30 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

La interfaz Statement, los objetos de

tipo Statement permiten realizar consultas y

efectuar operaciones de actualizacin, borrado o insercin de datos. En algunos casos es


interesante tambin fijar ciertos parmetros 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 mtodos que se citan a
continuacin son algunos de los ms 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 nmero de registros afectados por


la sentencia.
public abstract void setMaxRows(int max) throws SQLException
Establece el nmero mximo de registros que puede devolver executeQuery()
public abstract int getMaxRows() throws SQLException
Devuelve el nmero mximo 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

mtodo

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
Ing. Mirko Manrique Ronceros

con

Pgina 31 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

muchas opciones. Todos los mtodos funcionan de la misma manera. Toman como
parmetro el ndice o el nombre del campo que se desea obtener y devuelven el dato en
cuestin.
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
Adems,

existen

otros

mtodos

gracias

los

cuales

es

posible

recorrer

los

resultados guardados en el objeto de tipo ResultSet.


public

abstract

int

findColumn(String

columnName)

throws

SQLException

Devuelve el nmero de columna cuyo nombre se pasa como parmetro public


abstract boolean next() throws SQLException
Un

objeto

de

tipo

ResultSet

puede

contener

ms

de

un

resultado.

Para

ir

avanzando por la lista de resultados utilizamos este mtodo, 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
para

Jframe
abrir

un

nuevo formulario.

Ing. Mirko Manrique Ronceros

Pgina 32 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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


el botn de comando Finish.

Quedando el entorno de NetBeans de la siguiente manera:

3)

Damos clic botn derecho sobre el diseo del formulario para cambiar el

Set

Layout a AbsoluteLayout, lo cual nos permitir usar los objetos de control ms


libremente.

Ing. Mirko Manrique Ronceros

Pgina 33 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

4)

Tecnologa ClienteServidor con Java

Colocamos los objetos de control quedando el diseo 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

Pgina 34 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

6) A continuacin procedemos a colocar la programacin.

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

visualizacin

de

un

mensaje

travs

de

su

mtodo

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


usar. Vendra hacer los atributos de la clase frmVerEquipo. Como tenemos establecer
conexin usaremos un objeto Connection (conn), para hacer una operacin de consulta
usaremos un objeto Statement (st) y para almacenar los resultados de la consulta
usaremos un objeto ResultSet (rs). Como la aplicacin hace uso de los Jlist se tiene
crear 4 objetos instanciados de la clase DefaultListModel (mayor informacin en la
sesin 4 del curso de Programacin 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 diseado un mtodo denominado Enlace que permitir establecer conexin con
la base de datos campeonatouefa.
Ing. Mirko Manrique Ronceros

Pgina 35 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

7) La clase frmVerEquipo tienen un mtodo del mismo nombre frmVerEquipo(), esto es


lo que se denomina mtodo constructor. Deseamos que los datos se muestren en los
objetos Jlist al momento de la ejecucin del formulario debemos programar en el
mtodo 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 ejecutara lo programado en el bloque catch{ },
establecemos laconexin usando el mtodo Enlace, creamos el objeto st de tipo
Statement (se encuentra listo para relizar una operacin) 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 mtodo next
se logra desplazar a

travs 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

Pgina 36 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

8) Recuerda que en la sesin anterior slo se agreg un registro a la tabla de Equipo.


Si gustan ingresen ms registros a la tabla de Equipo y observarn los resultados.
Si ejecutamos la aplicacin observamos lo siguiente:

Ing. Mirko Manrique Ronceros

Pgina 37 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

OBJETO DE CONTROL JTABLE EN


MANTENIMIENTO DE DATOS
Objeto de control JTable
La presentacin de datos tabulados es una de las tareas ms comunes que se presentan al
momento de crear interfaces grficas; 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 ms complejo sea el requerimiento a cubrir, se requerir en igual
medida utilizar ms mtodos o recursos de la clase.
El objeto Jtable como los modelos de la tabla representados a travs de la interfaz
TableModel, pertenecen al paquete javax.swing.
El siguiente grfico 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
ms usada es model que permite definir el numero de filas y columnas, siendo los
mtodos ms usados: setModel(), que permite vincular un modelo al obejto Jtable y
getRowCount(), devuelve el nmero de filas en la tabla. Para la clase DefaultTableModel
los mtodos ms utilizados son: AddRow(), aade una fila al final del modelo,
getRowCount() devuelve el nmero de filas de la tabla de datos, getValueAt()
devuelve el dato ubicado en la posicin fila y columna y removeRow() elimina una fila del
modelo segn posicin indicada.

Ing. Mirko Manrique Ronceros

Pgina 38 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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 tambin 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 bsquedas sencillas para lograr su ubicacin y
proceder a su eliminacin o modificacin de datos. En esta sesin haremos uso del
reciente explicado objeto JTable para visualizar los datos contenidos en una tabla. A
continuacin vamos a seguir usando la base de datos de campeonatouefa ya utilizada
desde la tercera sesin de aprendizaje:
1. Vamos a crear la tabla de estadio en la base de datos campeonatouefa. La
instruccin para la creacin 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 sealar 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 normalizacin que se pueda hacer a las tablas que irn
creando en la base de datos campeonatouefa queda para las modificaciones que crean
convenientes.
2.

Logremos establecer la conexin con la base de datos de campeonatouefa en el


entorno de NetBeans.

Ing. Mirko Manrique Ronceros

Pgina 39 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

3.

Tecnologa ClienteServidor con Java

Volvamos a la pestaa Proyects donde vamos a crear mtodos en la clase Main,


necesarios para la conexin 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 visualizacin 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. Tambin definimos las
varibales bd, login, password y url.
A continuacin creamos el primer mtodo esttico denominado Enlace que devolver
un objeto del tipo Connection. Este mtodo nos ayudar establecer la conexin con la
base de datos campeonatouefa. Seguimos a continuacin agregando ms mtodos a la
clase Main.

Ing. Mirko Manrique Ronceros

Pgina 40 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

Se crea el mtodo sta que devolver un objeto del tipo Statement. Bsicamente
permite crear el objeto del tipo Statement a partir del objeto connection a travs
del

mtodo

createStatement(). Finalmente

se

necesita

tener

un

mtodo

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


mtodo executeQuery() estableciendo a travs 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
estn habilitados para su uso.
Si observamos en cada uno de los mtodos se esta usando throws SQLException, esto
quiere decir que los mtodos usan excepciones (intercepcion de errores) para los erroes
que se pueden presentar durante la conexin 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
elimnacin se proceder a cambiar el estado a 0 (elimacin lgica) y

cada vez que

grabemos los datos de un nuevo estadio se habilitar.


Vamos a disear el siguiente formulario al cual lo llamaremos frmMantEstadio
dando

los

nombres

correspondientes

cada

uno

de

los

objetos

de

control

dibujados.

Ing. Mirko Manrique Ronceros

Pgina 41 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

5. Vamos a proceder a programar, colocando las siguientes lneas de cdigo.

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 mtodos que tenga.

Ing. Mirko Manrique Ronceros

Pgina 42 de 100

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

Iniciamos la construccin 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 mtodo constructor hacemos uso del mtodo
activabotones (programacin que veremos luego), se establece un vector o arreglo del
tipo String donde se coloca los ttulos que sern de cada una de las columnas del objeto
JTable. A partir del mtodo setColumnIdentifiers indicamos los datos del vector titulos
al objeto dtm y con el mtodo setModel vinculamos el objeto dtm al objeto JTable
denominado tablaEstadio. Los mtodos setSize y setLocation es para establecer el
tamao y la localizacin del formulario en la pantalla del computador.

El mtodo activaBotones es para habilitar o inhabilitar el uso de los botones de


comando, esto depender en que circunstancias nos encontremos en la ejecucin de
la aplicacin de mantenimiento de datos de Estadios. Con el mtodo limpiarDatos se
limpia los cuadros de textos.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

En el botn de comando btnBuscar si est habilitado despus de dar clic en dicho botn, se
proceder a la conexin 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 situacin de xito o fracaso de la bsqueda. En la sentencia while utilizamos el mtodo
next que pertenece al objeto rs, es decir, es un
mtodo

next

devuelve

mtodo

de

la interfaz

ResulSet.

El

verdadero si encuentra la primera fila de informacin, las

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


encuentra dentro del while, su condicin lgica se har verdadero cuando encuentre el
cdigo

de

estadio buscado, haciendo que los cuadros de textos se muestren los dems

datos, es entonces que la variable encuentra recin se hace verdadero.


Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Ing. Mirko Manrique Ronceros

Tecnologa ClienteServidor con Java

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

El botn de comando btnVer (Ver Lista de Estadios), consiste en aumentar el tamao del
formulario para visualizar el objeto JTable. Posteriormente se establece la conexin 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 tamao 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 mtodo getString, indicando la posicin de la columna, podemos obtener el dato
de la fila actual.

Con el mtodo 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 botn de comando btnNuevo, limpiamos los cuadros de textos con el mtodo
limpiarObjetos. Se inhabilita el cuadro de texto txtCodEst y se enva el cursor

al

cuadro de texto txtNom. Se inhabilta los botones de comando a excepcin de


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

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Ing. Mirko Manrique Ronceros

Tecnologa ClienteServidor con Java

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

En el botn de comando btnGrabar se inicia visualizando un mensaje de confirmacin


para proceder a grabar, esto se logra usando el mtodo showConfirmDialog de la
clase JoptionPane. Si la respuesta es S entonces la sentencia if su condicin lgica se
har verdadera y por lo tanto establecemos conexin con la

base de datos

campeonatouefa, pasamos los datos ingresados a variables como nom, sede y pais. En
la variable comando establecemos la instruccin con el comando INSERT para luego
usar el mtodo executeUpdate quien proceder a grabar los datos. Posteriormente se
procede a cerrar la conexin con el mtodo close del objeto connection conn.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

En el botn de comando btnEliminar, tambin se procede a travs de un mensaje


confirmar si procede la eliminacin 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 cdigo del estadio ingresado a traves del cuadro de texto txtCodEst. Se
construye la instruccin usando el comando UPDATE, luego ejecutamos la eliminacin
lgica haciendo que el campo estado sea igual a cero y se cierra la conexin con la
base de datos.

En
el botn de comando btnModificar, al igual que de grabar o eliminar se procede a
confirmar a travs de un mensaje si se procede a la modificacin de datos. Una vez
salvados los datos ingresados en los cuadros de textos en variables de memoria
se prepara la instruccin en la variable de memoria comando. Usamos el comando
UPDATE para actualizar los datos. Se procede a ejecutar el comando con el mtodo
executeUpdate y se cierra la conexin con el mtodo close.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

En el botn 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 hablitacin de los botones de comando.

El botn de comando btnCerrar, con el mtodo 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 botn de comando Nuevo podemos proceder a ingresar datos. Una vez
ingresado damos clic en el botn de comando Grabar.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

9.

Tecnologa ClienteServidor con Java

Luego de grabar, al dar clic en el botn de comando Ver Lista de Estadios, el


formulario se mostrar de la siguiente forma.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

SWING MENUS Y MANTENIMIENTO DE DATOS


USANDO VARIAS TABLAS
Los objetos Swing Menus
En todo desarrollo de un proyecto de un sistema informtico se debe construir mens que
permita al usuario interaccionar con las opciones del sistema.
Aqu podemos ver el rbol de herencias de las clases relacionadas con los mens:

Tenemos el JmenuBar que permite iniciar el diseo del men, Se crea por defecto un
objeto Jmenu que permitir a partir de este crear las opciones, las cuales se crearn con
los objetos JmenuItem.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

Mantenimiento de datos usando varias tablas


Esta sesin abarca el desarrollo de un mantenimiento de datos usando ms de una tabla
Siguiendo la sesin 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 programacin de los
encuentros, para ello crearemos la tabla de Programacion. Para hacer el mantenimiento
de datos de la tabla de Programacin necesitaremos saber qu estadios estn disponibles y
cuales son los equipos participantes para el encuentro. Slo se tendr en cuenta la
etapa eliminatoria del campeonato.
Vamos a proceder a crear las tablas y luego a construir la aplicacin:
1. Creamos las tablas de Equipo usando el entorno de NetBeans.

2. Usando la opcin Execute Command escribimos:

3. Ejecutamos la instruccin,
Ing. Mirko Manrique Ronceros

luego

aplicamos

una

actualizacin

(Refresh)

para

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

visualizar la nueva tabla.

Posteriormente vemos la nueva tabla en la pestaa Services

4. Nuevamente usando la opcin Execute Command, escribimos:

5. Ejecutamos la instruccin, aplicamos Refresh y luego visualizamos la nueva tabla.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

6.

Tecnologa ClienteServidor con Java

Vamos a crear un formulario denominado frmPrincipal, donde disearemos el


siguiente men:

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

7. Diseamos el siguiente formulario que se denominar frmProgramacionPartidos.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

El cuadro de texto referido al numero de programacin 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


Finalmente

para

los

botones

se

denomina

tablaProgramacion.

de

comando que realizarn el mantenimiento de datos de Programacin de Partidos se


denominan: btnNuevo, btnBuscar, btnModificar, btnGrabar, btnCancelar y
btnCerrar.
8.

Vamos a proceder a agregar los mtodos en la clase Main que utilizaremos para el
mantenimiento de datos de la Programacin de Partidos.

Para obtener los registros de datos de aquellos encuentros que estn programados

Para obtener los equipos que pertenecen a un grupo indicado. Cada grupo debe
estar conformado por 4 equipos.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

Para obtener el nombre del equipo dado el cdigo 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 construccin de sentencias que
usan varias tablas.

Para obtener el cdigo del equipo dado el nombre del equipo. Este mtodo nos servir al
momento de grabar datos.

Para obtener el cdigo del estadio dado el nombre del estadio. Este mtodo nos servir
al momento de grabar o modificar datos.
9.

Veamos a continuacin el cdigo de la programacin que tendr el formulario


frmProgramacionPartidos.
a. Agregar los paquetes antes de la defincin de la clase frmProgramacionPartidos.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

b. Definir los atributos o variables a usar en los distintos mtodos que forma la
clase frmProgramacionPartidos

c. El mtodo constructor frmProgramacionPartidos() debe quedar de la siguiente


manera:

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

d. Construimos los mtodos activaBotones y limpiarObjetos()

e. Diseamos el mtodo llenarListas() para mostrar los posibles encuentros dado los 4
equipos que conforman un grupo.

f. Tambin se tienen el mtodo llenarTabla() para llenar de datos en la filas del


objeto JTable denominado tablaProgramacion.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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


indicar todo el cdigo ya que codificar para cuando se seleccione el grupo A, lo
mismo suceder con los dems grupos que conforma la etapa eliminatoria del
campeonato.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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


sucesivamente hasta el grupo H.

i. El botn de comando Buscar es para la bsqueda de una Programacin de un


encuentro, cuya programacin es la siguiente.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Continuamos con la programacin ....

Ing. Mirko Manrique Ronceros

Tecnologa ClienteServidor con Java

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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 seleccin se hace del equipo en la caja de lista lstEquipo2.


k.

Para el botn de comando Cancelar procedemos a programar lo siguiente:

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

l. Para el botn de comando Grabar procedmeos a codificar lo siguiente:

continuamos ...

m. Para el botn de comando Nuevo colocamos el siguiente cdigo:

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

n. Para el botn de comando Modificar escribimos el siguiente cdigo:

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

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

MANTENIMIENTO DE DATOS USANDO


PROCEDIMIENTOS ALMACENADOS
Procedimientos almacenados
Poco a poco las empresas y muchas personas en general empiezan a mirar ms 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
aos ha tenido grandes avances en su desarrollo y actualmente es uno de los DBMS ms
usados en sitios web y que en sus ltimas versiones ha incorporado nuevas caractersticas
como

la

implementacin

de

las

tablas,

disparadores,

funciones

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 mtodo preparedStatement para invocar el uso de un
procedimiento almacenado. Tambin se har uso de los mtodos setString(), setInt(),
setDate(), etc para indicar la posicin del parmetro y el valor de dicho parmetro.
Finalmente

usaremos

el

mtodo

executeUpdate()

para

ejecutar

el

procedimiento

almacenado.
A continuacin, procedemos a disear 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

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

2.

Tecnologa ClienteServidor con Java

Procedemos a crear el procedimiento almacenado sp_grabaArbitro que permitir la


grabacin de datos cuando se inserte un registro de datos en la tabla de Arbitro.

Una vez ejecutado la creacin del procedimeinto almacenado se observar en la


pestaa 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

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

Una vez ejecutado la creacin del procedimeinto almacenado se observar en la


pestaa de Services que dicho procedmiento se ha creado.

4.

Posteriormente, procedemos a crear el procedmiento almacenado sp_eliminaArbitro


que permitir hacer una eliminacin lgica del registro de datos.

Una vez ejecutado la creacin del procedimeinto almacenado se observar en la


pestaa de Services que dicho procedmiento se ha creado.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

5. En el formulario frmPrincipal que contiene el diseo del men, ubicamos la opcin


Arbitro dentro de Mantenimientos.

6. Seleccionado

Arbitro

dando

clic

botn

derecho

del

Events/Action/ActionPerformed.

Luego, escribimos el siguiente cdigo:

7. Diseamos el siguiente formulario denominado frmMantArbitro.

Ing. Mirko Manrique Ronceros

mouse

elegimos

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

8. En la clase Main colocar el mtodo EnlArb().

9.

Vamos a proceder a programar en el formulario frmMantArbitro colocando las


siguientes lneas de cdigo:

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 mtodos que tenga.

Preparamos las variables para el acceso de datos: conn, st, rs. En el mtodo
constructor frmMantArbitro() preparamos las columnas del objeto JTable y damos al
formulario su tamao y ubicacin dentro de la pantalla.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

Los mtodos activaBotones() permitir gestionar el uso de los botones de comando y el


mtodo limpiarDatos() es para limpiar los cuadros de textos.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

En el botn de comando btnBuscar si est habilitado despus de dar clic en dicho


botn, se proceder a la conexin 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 situacion de xito o fracaso de la bsqueda. En la sentencia
while utizamos el mtodo next() que pertenece al obejto rs, es decir, es un

mtodo

de la interfaz ResulSet.
El mtodo next devuelve verdadero si encuentra la primera fila de informacin, las
siguientes veces se desplaza en cada registro almacenado en el rs. La sentencia if que
se encuentra dentro del while, su condicin lgica se har verdadero cuando encuentre
el cdigo del rbitro buscado, haciendo que los cuadros de textos se muestren los
dems datos, es entonces que la variable encuentra recin se hace verdadero.

El botn de comando btnVer (Ver Lista de Arbitros), consiste en aumentar el


tamao del formulario para visualizar el objeto JTable. Posteriormente se establece la
conexin

con la base

de

datos

en

la

variable

rs

se

almacena

los

datos

provenientes de la tabla de Arbitro. Se define un vector denominado datos de tamao 6


elementos del tipo String que servir colocar los datos de una fila para luego agregarlo al
Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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 mtodo getString, indicando la posicin de la columna, podemos
obtener el dato de la fila actual.
Con el mtodo 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

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

En el botn de comando btnGrabar se inicia visualizando un mensaje de confirmacin


para proceder a grabar, esto se logra usando el mtodo showConfirmDialog de la
clase JoptionPane. Si la respuesta es S entonces la sentencia if su condicin lgica se
har verdadera y por lo tanto establecemos conexin 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

sp_grabaArbitro, colocando 4 signos de interrogacin que


parmetros que

almacenado

expresa el manejo de 4

tiene dicho procedimiento. Con los mtodos setString() del objeto

instanciado pstmt indicamos la posicin del parmetro y el valor del parmetro, as por
ejemplo: 1 indica ser el primer parmetro de entrada del procedimeinto almacenado
sp_grabaArbitro y ape

contiene

el

dato

apellido

que

se

asignar

al

primer

parmetro. Una vez indicado los valores a cada uno de los parmetros se hace uso del
mtodo

executeUpdate()

que

permitir

ejecutar

el

procedimiento

almacenado.

Posteriormente se procede a cerrar la conexin con el mtodo close del objeto


connection conn.

Para el botn de comando btnNuevo, limpiamos los cuadros de textos con el mtodo
limpiarObjetos. Se inhabilita el cuadro de texto txtCodArb y se enva el cursor al cuadro
de texto txtNom. Se inhabilta los botones de comando a excepcin de grabar.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

En el botn de comando btnEliminar, tambin se procede a travs de un mensaje


confirmar si procede la eliminacin 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 cdigo del rbitro ingresado a travs del cuadro de texto txtCodArb. En
la variable pstmt establecemos como procedimiento almacenado a sp_eliminaArbitro,
colocando un signo de interrogacin que expresa el manejo de un slo parmetro, luego
se usa el mtodo setInt() para indicar el valor del parmetro y posteriormente se cierra
la conexin.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

En el botn de comando btnModificar, al igual que de grabar o eliminar se procede a


confirmar a travs de un mensaje si se procede a la modificacin 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
mtodo executeUpdate y se cierra la conexin con el mtodo close.

En el botn 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 hablitacin de los botones de comando.

El botn de comando btnCerrar, con el mtodo dispose se cierra la ventana o


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

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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
transaccin representa una unidad de trabajo lgica. Como la principal responsabilidad de
una base de datos es preservar la informacin, 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 debera ignorar el
estado actual y volver a atrs, al estado del programa salvado anteriormente.
En el idioma de las bases de datos, estas funciones se llaman entregar una transacin y
deshacer una transacin, respectivamente. Para realizar estas tareas, el API JDBC
incluye dos mtodos 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

mtodos

pueden

lanzar

SQLExceptions si algo va mal cuando la base de datos realice realmente la operacin, por
eso necesitamos envolverlos en bloques try ... catch. Por defecto, una conexin funciona en
modo autocommit, es decir, cada vez que se ejecuta una sentencia SQL se abre y se cierra
automticamente una transaccin, que slo afecta a dicha sentencia. Es posible modificar
esta opcin 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 explcitamente 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 aplicacin. Sin embargo, en modo
multi-usuario, las transaciones son ms complejas. La demostracin clsica de una
transacin multi-usuario es una cuenta bancaria donde una aplicacin est intentando hacer
un cargo mientras otra aplicacin est intentando hacer un depsito 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

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Bsquedas

de

datos

con

Tecnologa ClienteServidor con Java

procedimientos

almacenados

usando

CallableStatement
Para las bsquedas y/o obtenciones de datos vamos a usar procedimientos almacenados.
La novedad con el uso de los procedimientos almacenados es hacer uso de parmetros
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 continuacin, procedemos a disear el proceso de Incidencias de un Encuentro o


Partido

usando

CallableStatement

procedimientos

almacenados con

la

interfaz

y transacciones:

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

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

Luego de ejecutar la sentencia, hacemos una actualizacin usando Refresh.

Observaremos la nueva tabla creada.

2.

Procedemos a crear el procedimiento almacenado sp_actualizaIncidencias que


permitir la grabacin de datos cuando se inserte un registro de datos en la tabla de
Incidencias.

Luego de ejecutar la sentencia, hacemos una actualizacin usando Refresh


Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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,

quedando la pestaa Services:

Ing. Mirko Manrique Ronceros

hacemos

una

actualizacin

usando

Refresh

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

4.

Tecnologa ClienteServidor con Java

No olvidar de agregar el procedimeinto almacenado sp_obtenerCodEstadio (ver la


segunda pagina de sta sesin).

5. En la clase Main agregamos los siguientes mtodos:

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

Este mtodo nos ayudar a llenar de datos en el objeto JTable del diseo de
formulario frmIncidenciasEncuentro.

Este mtodo permitir buscar las incidencias ocasionadas por los dos equipos de un
encuentro dado el nmero de programacin.
6. En el formulario frmPrincipal que contiene el diseo del men, ubicamos la opcin
Incidencias dentro de Procesos.

7.

Seleccionando incidencias del Encuentro y dando clic con el botn derecho del
mouse elegimos Events/Action/ActionPerformed.

Luego, escribimos el siguiente cdigo:

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

8. Diseamos el siguiente formulario denominado frmIncidenciasEncuentro.

9.

Vamos a proceder a programar en el formulario frmIncidenciasEncuentro colocando


las siguientes lneas de cdigo:

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 mtodos que tenga.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

En el mtodo constructor frmIncidenciasEncuentro() preparamos las columnas del


objeto

JTable

y llenamos

de

datos

usando

el mtodo

VistaProgramacion().

Tambin damos al formulario su tamao y ubicacin dentro de la pantalla

El mtodo limpiarTextos() es dejar en blanco los cuadros de textos.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Programar

en el

evento

MouseClicked

Tecnologa ClienteServidor con Java

ea

para

que

el

usuario

seleccione

una

programacin de partido se muestre las incidencias ocurridas en el encuentro.


Dado el nmero de la programacin y usando el mtodo 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 mtodo next() de ResultSet se accede a
cada uno de los registros y con el mtodo 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 estaran 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

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Ing. Mirko Manrique Ronceros

Tecnologa ClienteServidor con Java

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

V
a
m
o
s

explicando lo ms resaltante de la programacin del botn de comando Actualizar. Si la


variable pblica graba viene con el valor True se procede a

conformacin.

Si

la

respuesta

es

afirmativa

invocar un

mensaje

de

capturamos en la variable de memoria

nropro el nmero de la programacin. A continuacin viene el inicio de una transaccin, que


a travs del mtodo setAutoCommit() al ponerle el valor de false dentro del parntesis
estamos indicando a la conexin que no se proceder a terminar la transaccin hasta que se
use el mtodo commit().

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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 parmetro de entrada y otro de salida. El valor del
primer parmetro lo indicamos con el mtodo setString() y como el segundo parmetro es
de salida se hace uso del mtodo registerOutParameter() indicando el tipo de dato que es
entero. Con el mtodo execute() se ejecuta el procedimeinto almacenado y para obtener el
valor del parmetro de salida usamos el mtodo getInt() debido que el parmetro es de
tipo entero. Posteriormente se asignan a las variables los datos que se usarn para la
grabacin

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
mtodo commit() a travs del objeto conn que permitir terminar la transaccin.
En el caso de que la variable graba sea False, entonces se proceder hacer casi lo mismo
sino que esta vz se usar el procedimiento almacenado sp_modificaIncidencias para
modificar los datos.

El botn de comando btnCerrar, con el mtodo dispose se cierra la ventana o


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

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

CONSULTA DE DATOS USANDO EL OBJETO JTABLE


Objeto de control JTable y mtodos del interface ResulSet
El objeto Jtable constituir en el componente de visualizacin 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 tambin sus principales mtodos. Generalmente
cuando se realiza una consulta a una base de datos se traen todos los registros, lo cual
funciona con conjuntos de tamao 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 funcin para saltar a un registro determinado absolute().
Aqu hay un ejemplo completo, se le entrega el nmero de pgina, y la cantidad de filas, y
retorna un arreglo con los registros. Esta implementacin mejora considerablemente el
desempeo (performance) de la consulta (query), debido que el conjunto resultado (result
set) que se recorre, y maneja es mucho menor.
El ejemplo tambin 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 tambin optimiza la ejecucin de las consultas, precompilando el
query en la Base de Datos, y manteniendolo en cache para futuras ejecuciones.
Veamos a continuacin como se podra hacer una consulta a los datos de la tabla de Estadio y
almacenarlos en un arreglo.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

Con respecto al uso de los mtodos de un ResultSet, lo ms utilizados son:


public abstract boolean next() throws SQLException
Un objeto de tipo ResultSet puede contener ms de un resultado. Para ir
avanzando por la lista de resultados utilizamos este mtodo, 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 mtodos
funcionan de la misma manera. Toman como parmetro el ndice o el nombre del
campo que se desea obtener y devuelven el dato en cuestin.
public abstract void close() throws SQLException
Libera los recursos asociados al ResultSet.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

Consulta de Datos usando PreparedStatement


En esta oportunidad vamos a utilizar el interface PreparedStatement para preparar la
consulta, cuya ejecucin 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 disear y desarroller la aplicacin seguiremos los siguientes pasos:
1. En la clase Main agregamos el siguiente mtodo denominado BuscaJugEquipo:

El mtodo BuscaJugEquipo se inicia invocando al mtodo sta() que a su vez utiliza el


mtodo Enlace(), este ltimo establece la conexin con la base de datos, por lo tanto
el objeto conn deja de ser null y contiene la informacin necesaria de la conexin 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 ms
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 mtodo
setString() donde el parmetro nomequi contiene el valor o dato a reemplazar en ?.
Se ejecuta la consulta usando el mtodo

executeQuery(),

almacena en el objeto ResultSet llamado rs.


Tambin en la clase Main debe estar el mtodo EnlEqui():

Ing. Mirko Manrique Ronceros

cuyo

resultado

se

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

Este mtodo nos permitir obtener los datos de los Equipos habilitados para el
campeonato.
2.

En el formulario frmPrincipal que contiene el diseo del men, ubicamos la opcin

Jugadores por Equipo dentro de consultas.

Seleccionando Jugadores por Equipo y dando clic con el botn derecho del mouse
elegimos Events/Action/ActionPerformed

Luego escribimos el siguiente cdigo:

3. Diseamos el siguiente formulario denominado frmConsJugEqui.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

4. Vamos a proceder a programar en el formulario frmConsJugEqui colocando las siguientes


lneas de cdigo:

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 mtodos que tenga.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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 mtodos setSize() y setLocation() el tamao y la localizacin


del objeto formulario. Con la variable arreglo llamado titulos de tipo String, almacenamos los
ttulos de cada uno de las columnas. Con el mtodo setColumnIdentifiers() damos el
arreglo titulos para establecer los titulos de cada columna que maneja el modelo dtm. Con el
mtodo setmodel() vinculamos el modelo al objeto Jtable tablaConsulta. En el bloque try
iniciamos con establecer la conexin con la base de datos campeonatouefa. Una vez que se
tienen la conexin procedemos a ejecutar el mtodo EnlEqui() que se encuentra en la clase
Main que permitir obtener todos los equipos.

Con el mtodo next() se ubica al primer

registro de los resultados devueltos por el mtodo EnlEqui(), de ah cada vez que usemos el
mtodo next() se desplazar al siguiente registro. Cuando el mtodo next() devuelva falso
terminar la ejecucin de la setencia repetitiva while. En cada desplazamiento se agregar al
objeto JcomboBox denominado cboEquipos el nombre del equipo.

Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

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 mtodo getSelectedItem() obtiene el nombre del equipo elegido
pero lo extrae de tipo Object y al anteponerle la expresin (String) se comporta como
dato de tipo String y lo asigna a la variable nomequi. En el bloque try establecemos la
conexin

con

la

base

de

datos

campeonatouefa

y ejecutamos el mtodo

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
mtodo next() del objeto rs es para ubicarnos en la primera fila y en las siguientes filas
de los resultados devueltos por el mtodo BuscaJugEquipo(). En cada interacin se
agregar una fila en el objeto tablaConsulta a travs del modelo dtm usando el mtodo
addRow().
Ing. Mirko Manrique Ronceros

Universidad Nacional del Santa


Facultad de Ingeniera
E.A.P. Sistemas e Informtica

Tecnologa ClienteServidor con Java

El botn de comando btnCerrar, con el mtodo dispose se cierra la ventana o formulario.

5.
Procedemos a ejecutar el formulario desde el men.

Ing. Mirko Manrique Ronceros

También podría gustarte