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

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

INDICE
Introduccin Programacin Cliente Servidor Herramientas para la Programacin Cliente Servidor Arquitectura Cliente Servidor Conectividad a la ase de !atos con "! C ase de !atos $so del %ntorno &et'eans para cone(in a 02 03 04 06 0# )6 26 3# 30 66 44 50

Acceso de la 'ase de datos * el paquete +ava,sql -'+eto de control ".a'le en mantenimiento de datos S/ing0 1en2s * mantenimiento de datos usando varias ta'las 1antenimiento de datos usando procedimientos almacenados .ransacciones * 2squedas con 'ase de datos consulta de datos usando el o'+eto ".a'le

Ing. Mirko Manrique Ronceros

P)%ina * de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

INTRODUCCION
6a tecnolog7a llamada Cliente 8Servidor es actualmente utili9ada en casi todas las aplicaciones administrativas e Internet8Intranet, a+o este esquema0 un servidor es un ordenador remoto0 en alg2n lugar de una red0 que proporciona in:ormacin seg2n se le solicite, 1ientras que un cliente :unciona en su computadora local0 se comunica con el servidor remoto * pide a ;ste in:ormacin, 6os sistemas Cliente<Servidor pueden ser de muc=os tipos0 pues esto depende principalmente de las aplicaciones instaladas en el propio servidor, %ntre otros0 e(isten> servidores de impresin mediante los cuales los usuarios comparten impresoras0 servidores de arc=ivos con los que los clientes comparten discos duros0 servidores de 'ases de datos donde e(iste una 2nica 'ase de datos que es consultada por los clientes * puede o no ser modi:icada por ellos * servidores ?e' que utili9an tam'i;n la tecnolog7a Cliente8Servidor0 aunque a@aden aspectos nuevos * propios a la misma, 6os servidores /e' qui9As actualmente son los de ma*or importancia, $n servidor /e' es aquel que permite a los clientes compartir datos0 documentos * multimedia en :ormato /e', Aunque parte de la tecnolog7a Cliente8Sevidor0 el servidor ?e' aporta venta+as adicionales a un servidor tradicional,

%l

presente documento .ecnolog7a

Cliente

Servidor

con "ava es

un

manual

orientado al conocimiento del lengua+e "ava0 utili9ando como entorno de desarrollo &et eans * un gestor de 'ases de datos de pre:erencia 1*Sql, %n este manual se =arA una presentacin * estudio de las inter:aces visuales a trav;s de "ava como lengua+e de programacin, %l manual tendrA 03 temas :undamentales0 la primera es el BAcceso de !atosC0 la segunda es B1antenimiento de !atosC * la tercera BConsultas e In:ormesC,

Ing. Mirko Manrique Ronceros

P)%ina - de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Pr!%ramacin C"ien#e - Servid!r


"ava es un nuevo lengua+e de programacin0 como tantos otros, As7 que uno se pregunta el por qu; del revuelo que se =a :ormado con su aparicin, 6a respuesta no es inmediatamente o'via si se o'serva el asunto desde el punto de vista de la programacin tradicional0 porque aunque resuelve algunos de los pro'lemas t7picos de este tipo de programacin0 lo que verdaderamente es importante es que tam'i;n resuelve los pro'lemas que se generan en Internet0 en la Telaraa Mundial0 en el World-Wide-Web0 en la Web. Internet es un sistema Cliente<Servidor gigante, 6a idea primaria de un sistema cliente<servidor es que de'e =a'er un sitio donde se centrali9a la in:ormacin0 que se desea distri'uir 'a+o demanda a un con+unto de personas o mAquinas, 6a clave de este concepto radica en que si se produce un cam'io en la in:ormacin del sistema central0 inmediatamente es propagada a los receptores de la in:ormacin0 a la parte cliente, 6uego0 el concepto 'Asico es mu* simpleD el pro'lema se presenta cuando =a* solamente un servidor que tiene colgados a muc=os clientes0 en que el rendimiento general del sistema decrece de :orma e(ponencial al aumento del n2mero de clientes, %l :uncionamiento de la ?e' sigue este mismo principio, Inicialmente0 se solicita una in:ormacin a un servidor * ;ste env7a de vuelta un :ic=ero que serA interpretado por el navegador Eel clienteF que lo :ormatearA para visuali9arlo en la mAquina cliente, %l navegador :ue el primer paso adelante en la e(pansin de Internet0 *a que permit7a visuali9ar un mismo :ic=ero en plata:ormas di:erentes sin =acerle cam'io algunoD pero su :inalidad principal es la visuali9acin de :ic=eros0 no la interactividad con el usuario0 ni la posi'ilidad de e+ecutar programas en la parte del usuario0 en la parte cliente del sistema, "ava estA siendo continuamente e(tendido para proporcionarle nuevas caracter7sticas * li'rer7as que resuelven elegantemente pro'lemas que son mu* di:7ciles en la programacin tradicional como el acceso a 'ases de datos0 el uso de multi=ilo0 la programacin de redes * la programacin distri'uida0 * ademAs porque "ava0 a trav;s de los applets0 permite la programacin de la parte cliente, $n applet es un miniprograma que corre solamente 'a+o un navegador * es descargado automAticamente como parte de una pAgina ?e'0 al igual que cualquier grA:ico0 * cuando se activa0 e+ecuta un programa, %ste es el inter;s0 proporciona una :orma a trav;s de la cual se puede distri'uir so:t/are al cliente desde el servidor0 en el momento en que el cliente necesite ese so:t/are0 * no antes0 con lo cual siempre tendrA el cliente la 2ltima versin de ese so:t/are0 se actualice cuando se actualice, AdemAs0 tal como estA dise@ado "ava0 el programador necesita crear su programa una sola ve90 * *a estarA listo para ser e+ecutado en todas las plata:ormas que dispongan de un navegador con soporte "ava,

Ing. Mirko Manrique Ronceros

P)%ina . de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

/erramien#a
.enemos> Sockets

0ara "a Pr!%ramacin C"ien#e - Servid!r1

Implementados en todos los sistemas operativos modernos, Comunican dos procesos que pueden estar alo+ados en dos mAquinas di:erentes, %l cliente de'e conocer la mAquina * el puerto donde se u'ica el servidor, Se de'e esta'lecer un protocolo cliente8servidor para el correcto :uncionamiento de la aplicacin,

RPCs asado en SocGets, A'strae al programador del uso de SocGets, Sigue siendo necesaria la distincin del cdigo cliente * del cdigo servidor,

A"#erna#iva 0ara de arr!""! de a0"icaci!ne 1

1. C-H A>
%s necesario que e(ista una versin de C-H A para la plata:orma donde se quiere implementar, Ventajas> I I I Soporta m2ltiples plata:ormas * lengua+es de programacin, !ispone de una gran cantidad de servicios !e:inida por un organismo serio e independiente

Incovenientes> I I I Comple+idad en el desarrollo 6entitud para adaptarse Pocas implementaciones li'res,

2. &%.
Ventajas> I Soporta m2ltiples plata:ormas I JAcil proceso de desarrollo EKisual Studio ,&etF I %ntorno ?indo/s mu* e(tendido, I uen marGeting

Inconvenientes> I %(clusiva del sistema operativo ?indo/s I Propia de 1icroso:t I Casi ninguna implementacin li're,

Ing. Mirko Manrique Ronceros

P)%ina 2 de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

3. "AKA %%
Ventajas> I Soporta para m2ltiples plata:ormas * sistemas operativos I Avalado por m2ltiples empresas ES$&0 I 10 -HAC6%0 etcF I Competitividad I Soluciones 6i'res Inconvenientes> I %(clusivo para el lengua+e "ava I Comple+idad relativa en el desarrollo de aplicaciones I &o e(iste un entorno de desarrollo :i+o,

Ar3$i#ec#$ra C"ien#e Servid!r1


Modelo Lgico> I Lestor de presentacin> 1uestra la inter:ace del usuario, I 6gica de Presentacin> %sta'lece que se de'e mostrar al usuario, I 6gica de la Aplicacin> Juncionalidad de la aplicacin, I 6gica de &egocio> Juncionalidad de la empresa0 com2n para todas las

aplicaciones, I 6gica de los datos> !e:inicin lgica de los datos Evistas0 ta'las0 tipos de datos0 claves0 etc,F I Lestor de !atos> %ncargada de escri'ir * acceder a la 'ase de datos,

Modelo Fsico> ) capa ESistema monol7tico0 no es realmente una aplicacin C8SF

Ing. Mirko Manrique Ronceros

P)%ina 4 de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica 2 capas ECliente Servidor tradicionalF

Tecn!"!%&a C"ien#e'Servid!r c!n Java

3 capas ECliente 6gica &egocio !atosF

%l modelo de 3 capas esta 'asado en o'+etos> Clientes> Mue son aplicaciones propias 6gica de &egocio * de !atos> -'+etos distri'uidos

.am'i;n estA 'asado en la ?% > Clientes> &avagadores

6gica de &egocio * de !atos> Leneracin dinAmica de contenidos en lengua+e H.160 N160 (H.16,

Ing. Mirko Manrique Ronceros

P)%ina 5 de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

CONECTIVIDAD DE LA BASE DE DATOS CON JDBC

67$8 e $n JD9C:
6a conectividad de la 'ase de datos de "ava E JD9C ; "ava !ata'ase Connectivit*F es un marco de programacin para los desarrolladores de "ava que escri'en los programas que tienen acceso a la in:ormacin guardada en 'ases de datos0 =o+as de calculo0 * arc=ivos OplanosO, "! C se utili9a com2nmente para conectar un programa del usuario con una 'ase de datos por BdetrAs de la escenaC0 sin importar qu; so:t/are de administracin o mane+o de 'ase de datos se utilice para controlarlo, Para la gente del mundo ?indo/s0 "! C es para "ava lo que OD9C es para ?indo/s, ?indo/s en general no sa'e nada acerca de las 'ases de datos0 pero de:ine el estAndar -! C consistente en un con+unto de primitivas que cualquier driver o :uente -! C de'e ser capa9 de entender * manipular, 6os programadores que a su ve9 deseen escri'ir programas para mane+ar 'ases de datos gen;ricas en ?indo/s utili9an las llamadas -! C, Con "! C ocurre e(actamente lo mismo> "! C es una especi:icacin de un con+unto de clases * m;todos de operacin que permiten a cualquier programa "ava acceder a sistemas de 'ases de datos de :orma =omog;nea, 6gicamente0 al igual que -! C0 la aplicacin de "ava de'e tener acceso a un driver "! C adecuado, %ste driver es el que implementa la :uncionalidad de todas las clases de acceso a datos * proporciona la comunicacin entre el API "! C * la 'ase de datos real, -! C es un inter:a9 escrito en lengua+e C0 que al no ser un lengua+e porta'le0 =ar7a que las aplicaciones "ava tam'i;n perdiesen la porta'ilidad, P ademAs0 -! C tiene el inconveniente

Ing. Mirko Manrique Ronceros

P)%ina < de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a Tecn!"!%&a C"ien#e'Servid!r c!n Java E.A.P. Si #ema e In(!rm)#ica de que se =a de instalar manualmente en cada mAquinaD al contrario que los drivers "! C0 que al estar escritos en "ava son automAticamente instala'les0 porta'les * seguros, 6a conectividad de 'ases de datos de "ava se 'asa en sentencias SM60 por lo que se =ace imprescindi'le un conocimiento adecuado de SM6 para reali9ar cualquier clase de operacin de 'ases de datos, Aunque0 a:ortunadamente0 casi todos los entornos de desarrollo "ava o:recen componentes visuales que proporcionan una :uncionalidad su:icientemente potente sin necesidad de que sea necesario utili9ar SM60 aunque para usar directamente el "!Q se =aga imprescindi'le Acce ! a =a e de da#! c!n JD9C A continuacin vemos los modelos di:erentes de acceso a 'ase de datos> M!de"! de * ca0a %l presente modelo se 'asa en que la cone(in se presenta entre la aplicacin "ava o el applet Eque se e+ecuta en el navegadorF0 se conectan directamente a la 'ase de datos,

Como sa'emos en "ava se puede tener dos tipos de aplicaciones> la aplicacin "ava propiamente dico * una aplicacin applet0 esta 2ltima que se e+ecuta en un navegador, -'servamos en la :igura que el driver o controlador "! C de'e residir en la computadora local, 6a 'ase de datos puede estar en cualquier otra mAquina * se accede a ella mediante la red, %sta es la con:iguracin de t7pica Cliente8Servidor> el programa cliente env7a instrucciones SM6 a la 'ase de datos0 ;sta las procesa * env7a los resultados de vuelta a la aplicacin M!de"! de - ca0a %l presente modelo0 las instrucciones son enviadas a una capa intermedia entre Cliente * Servidor0 que es la que se encarga de enviar las sentencias SM6 a la 'ase de datos * recoger el resultado desde la 'ase de datos, %n este caso el usuario no tiene contacto directo0 ni a trav;s de la red0 con la mAquina donde reside la 'ase de datos,

Ing. Mirko Manrique Ronceros

P)%ina > de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Comparando con el modelo anterior0 se o'serva que el driver o controlador "! C se encuentra +unto al servidor de aplicaciones0 esto =ace que la mAquina del cliente no se preocupe por instalar el controlador, %l nivel intermedio mantiene en todo momento el control del tipo de operaciones que se reali9an contra la 'ase de datos, C"a i(icacin de "! Driver %l driver "! C puede pertenecer a una de las siguientes categor7as> P$en#e JD9C-OD9C $tili9ada por Sun inicialmente para populari9ar "! C * consiste en aprovec=ar todo lo e(istente0 esta'leciendo un puente entre "! C * -! C, %ste driver convierte todas las llamadas "! C a llamadas -! C * reali9a la conversin correspondiente de los resultados,

Ing. Mirko Manrique Ronceros

P)%ina +, de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

6a venta+a de este driver0 que se proporciona con el "!Q0 es que "ava dispone de acceso inmediato a todas las :uentes posi'les de 'ases de datos * no =a* que =acer ninguna con:iguracin adicional aparte de la *a e(istente, 6a desventa+a estA en que es lenta * no serA posi'le ser usada en el sistema operativo 6inu(, Java 9inari!

%ste driver se salta la capa -! C * =a'la directamente con la li'rer7a nativa del :a'ricante del sistema ! 1S Ecomo pudiera ser DB-Library para 1icroso:t SM6 Server o CTLib para S*'ase SM6 ServerF, %ste driver es un driver con las limitaciones * pro'lemas que esto implica, 100% ava pero a2n as7 necesita la e(istencia de un cdigo 'inario Ela li'rer7a ! 1SF en la mAquina del cliente0

+,,? Java@Pr!#!c!"! Na#iv! %ste driver es reali9ado completamente en "ava que se comunica con el servidor ! 1S utili9ando el protocolo de red nativo del servidor, !e esta :orma0 el driver no necesita intermediarios para =a'lar con el servidor * convierte todas las peticiones "! C en peticiones de red contra el servidor, 6a venta+a de este tipo de driver es que es una solucin 100% ava *0 por lo tanto0 independiente de la mAquina en la que se va a e+ecutar el programa

Ing. Mirko Manrique Ronceros

P)%ina ++ de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

6a 2nica desventa+a de este tipo de drivers es que el cliente estA ligado a un servidor ! 1S concreto, +,,? Java@Pr!#!c!"! Inde0endien#e

Hequiere la presencia de un intermediario en el servidor, %n este caso0 el driver "! C =ace las peticiones de datos al intermediario en un protocolo de red independiente del servidor ! 1S, %l intermediario a su ve90 que estA u'icado en el lado del servidor0 convierte las peticiones "! C en peticiones nativas del sistema ! 1S, 6a venta+a de este m;todo es inmediata> el programa que se e+ecuta en el cliente0 * aparte de las venta+as de los drivers 100% ava0 tam'i;n presenta la independencia respecto al sistema de 'ases de datos que se encuentra en el servidor, Car%ar e" c!n#r!"ad!r JD9C Para tra'a+ar con el API "! C se tiene que importar el paquete Aava. 3"0 tal * como se indica a continuacin> import +ava,sql,RD %n este paquete se de:inen los o'+etos que proporcionan toda la :uncionalidad que se requiere para el acceso a 'ases de datos, %l siguiente paso despu;s de importar el paquete +ava,sql consiste en cargar el controlador "! C0 es decir un o'+eto Driver espec7:ico para una 'ase de datos que de:ine cmo se e+ecutan las instrucciones para esa 'ase de datos en particular, Ha* varias :ormas de =acerlo0 pero la mAs sencilla es utili9ar el m;todo (!rNameBC de la clase C"a > Class,:or&ameEOControlador "! COFD Para el caso particular del controlador para 1*SM60 Connector8"0 se tiene lo siguiente> C"a .(!rNameBDc!m.mE 3".Ad=c.DriverDCF

Ing. Mirko Manrique Ronceros

P)%ina +* de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

!e'e tenerse en cuenta que el m;todo estAtico :or&ameEF de:inido por la clase Class genera un o'+eto de la clase especi:icada, Cualquier controlador "! C tiene que incluir una parte de iniciacin estAtica que se e+ecuta cuando se carga la clase, %n cuanto el cargador de clases carga dic=a clase0 se e+ecuta la iniciacin estAtica0 que pasa a registrarse como un controlador "! C en el DriverMana%er, %s decir0 el siguiente cdigo> Class,:or&ameEOControlador "! COFD es equivalente a> Class c S Class,:or&ameEOControlador "! COFD !river driver S E!riverFc,ne/InstanceEFD !river1anager,register!riverEdriverFD Algunos controladores no crean automAticamente una instancia cuando se carga la clase, Si :or&ameEF no crea por s7 solo una instancia del controlador0 se tiene que =acer esto de manera e(pl7cita> Class,:or&ameEOControlador "! COF,ne/InstanceEFD !e nuevo0 para el Connector8"> C"a .(!rNameBDc!m.mE 3".Ad=c.DriverDC.neGIn #anceBCF %n toda aplicacin de 'ases de datos con 1*SM6 es indispensa'le poder esta'lecer la cone(in al servidor para posteriormente enviarle las consultas, 6os programas en "ava no son la e(cepcin, %l siguiente cdigo nos servirA para veri:icar que podemos esta'lecer una cone(in a nuestra 'ase de datos #ran 0!r#e import +ava,sql,RD pu'lic class .estConnection T Static String 'dSCtransportesCD static String loginSC'ingoCD static String pass/ordSC=olaCD static String urlSC+d'c>m*sql>88local=ost8CU'dD pu'lic static void mianEStringV W argsFt=ro/s I-%(ception T Connection conn S nullD tr* T Class,:or&ameEBcom,m*sql,+d'c,!riverF,ne/InstanceEFD conn S !river1anager,getConnectionEurl0login0pass/ordFD i: Econn XS nullF T S*stem,out,printlnEBCone(in a la 'ase de datos CU'dUC,,, -QCFD conn,closeEFD Y Ing. Mirko Manrique Ronceros P)%ina +- de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a Tecn!"!%&a C"ien#e'Servid!r c!n Java E.A.P. Si #ema e In(!rm)#ica Y catc=ESM6%(ception e(F T S*stem,out,printlnEe(FD Y catc=EClass&otJound%(ception e(F T S*stem,out,printlnEe(FD Y Y Y %n esta programacin se inicia importanto el paquete sql perteneciente a +ava, %l signo del asterisco signi:ica que el programa puede =acer uso de culaquier clase contenida en el paquete sql, Se constru*e la clase .e(tConnection0 esta'leciendo 4 varia'les o atri'utos de tipo String donde se almacena el nom're de la 'ase de datos0 el login0 la contrase@a o pass/ord * el url, $na ve9 en el m;todo principal llamado main se declara la varia'le o'+eto conn * a trav;s de la instruccin tr* se 'usca proteger la e+ecucin ante posi'les errores Elo que se denomina mane+o de e(cepcionesF, Con la instruccin> Class,:or&ameEBcom,m*sql,+d'c,!riverF,ne/InstanceEFD0 se esta'lece el driver para el gestor de 'ase de datos 1*Sql, 6uego en la siguiente l7nea de programacin se esta'lece la cone(in con la 'ase de datos a trav;s del m;todo getConnection perteneciente a la clase !river1anager, A trav;s de la sentencia selectiva i: se eval2a el ;(ito de la cone(in0 por lo tanto0 si la varia'le conn es di:erente de null signi:ica que se logr la cone(in0 caso contrario se mostrarA mensa+es de error0 gracias a la instruccin catc=, A continuacin se listan algunas de las salidas que se pueden o'tener al e+ecutar el programa anterior> V'luemanZcasitaW[ +ava .estConnection Cone(in a 'ase de datos +d'c>m*sql>88local=ost8agendita ,,, -G Esigni:ica> .odo :unciona 'ienF V'luemanZcasitaW[ com,m*sql,+d'c,!river ESeguramente no se =a puesto la ruta al arc=ivo connector,+ar en la varia'le de am'iente C6ASSPA.HF V'luemanZcasitaW[ +ava .estConnection +ava,sql,SM6%(ception> Invalid aut=ori9ation speci:ication> Access denied :or user> \'ingoZlocal=ost\ E$sing pass/ord> P%SF Ing. Mirko Manrique Ronceros P)%ina +. de +,, +ava .estConnection +ava,lang,Class&otJound%(ception>

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

E%l login o el pass/ord proporcionados no nos permiten el acceso al servidorF V'luemanZcasitaW[ +ava .estConnection +ava,sql,SM6%(ception> &o suita'le driver EPro'a'lemente se =a escrito de :orma incorrecta el $H6 para la 'ase de datosF

V'luemanZcasitaW[ +ava .estConnection +ava,sql,SM6%(ception> Leneral error> Access denied :or user> \'ingoZlocal=ost\ to data'ase \transportes\ EPro'a'lemente se =a escrito de manera incorrecta el nom're de la 'ase de datosF

Ing. Mirko Manrique Ronceros

P)%ina +2 de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

USO DEL ENTORNO DE NETBEANS PARA LA CONEXIN DE BASE DE DATOS


C!nec#!r a "a =a e de da#!
$na aplicacin en "ava para que logre comunicarse con una 'ase de datos usando la API "! C0 se requiere de un conector, %se conector es espec7:ico para el mane+ador de 'ase de datos * viene en la :orma de un arc=ivo B,+arC o B,9ipC, %l conector para la 'ase de datos 1*SM60 estA en el arc=ivo> mE 3"-c!nnec#!r-Aava--.+.HH.Aar %(iste versiones superiores como la versin 3,0 para dic=o conector, &et eans nos permite la tarea de conectar una aplicacin a una 'ase de datos C!neIin de $na A0"icacin a $na =a e de da#! creada en MES3" Para conectar a una aplicacin a una 'ase de datos0 se requiere>

1. 2.

Agregarle a &et eans el conector como una 'i'lioteca o li'rer7a, %sto permite que el conector este disponi'le para los pro*ectos, Agregarle a un pro*ecto el conector, %sto permite que la aplicacin se pueda conectar a la 'ase de datos,

A continuacin procedemos agregarle a &et eans un conector a una 'ase de datos 1*Sql> a, Seleccione la opcin .ools86i'raries de la 'arra de men2 del entorno de &et eans,

Ing. Mirko Manrique Ronceros

P)%ina +4 de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

b.

Se visuali9a un cuadro diAlogo permite administrar li'rer7as 'i'liotecas las o de de que

&et eans, %n la ventana0 al lado i9quierdo o'serva li'rer7as agregadas &et eans, lado a !el se las

derec=o

aparece el nom're de la 'i'lioteca * la tra*ectoria del arc=ivo con la 'i'lioteca, Para agregar el conector a 1*SM6 a &et eans presione el 'otn de comando NeG Li=rarE ...

a. Se mostrarA un cuadro de diAlogo donde se esta'lecerA el nom're que daremos al


conector0 como por e+emplo MES7L * luego damos clicG en el 'otn de comando -Q,

b. Se

cierra *

el

cuadro a

de la

diAlogo

volvemos

ventana anterior donde se o'servarA la nueva li'rer7a MES7L, 'otn de Posteriormente comando Add procedemos a dar clic en el JAR@F!"der ...

Ing. Mirko Manrique Ronceros

P)%ina +5 de +,,

c.

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a Tecn!"!%&a C"ien#e'Servid!r c!n Java E.A.P. Si #ema e In(!rm)#ica uscamos el conector mE 3"-c!nnec#!r-Aava--.+.5- =in.Aar

d. Al dar clic en Add "AH8Jolder volvemos a la ventana anterior, Ca'e se@alar que en las
2ltimas versiones de &et eans *a e(iste una li'rer7a o 'i'lioteca para la cone(in a una 'ase de datos de 1*Sql0 denominada MYS L !"#C "river.

!amos clicG en el 'otn de comando -G * vamos a crear un pro*ecto>

1) Seleccionamos la opcin Jile8&e/ Pro*ect de la 'arra de men2 del entorno de


&et eans,

Ing. Mirko Manrique Ronceros

P)%ina +< de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

2) Seleccionamos en Categories> "ava * como pro*ecto> "ava Application, 6uego damos


clicG en el 'otn de comando &e(t,

3) 6uego indicamos como nom're del pro*ecto campeonato$e:a * posteriormente damos


clic en el 'otn de comando Jinis=0 quedando el entorno de &et eans de la siguiente manera>

Ing. Mirko Manrique Ronceros

P)%ina +> de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

4) %n 6i'raries lo seleccionamos * damos clic con el 'otn de derec=o * eligimos la


opcin Add Li=rarE,

5) Aparece un cuadro de diAlogo para seleccionar la li'rer7a a agregar0 en este caso


M$S L Een las 2ltimas versiones de &et eans tenemos el conector MES7L JD9C DriverF * damos clic en Add Li=rarE,

6F Kolvemos al entorno de &et eans * se o'serva la nueva li'rer7a agregada,

Ing. Mirko Manrique Ronceros

P)%ina *, de +,,

7)

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a Tecn!"!%&a C"ien#e'Servid!r c!n Java E.A.P. Si #ema e In(!rm)#ica A=ora procedemos a la conce(in de una 'ase de datos0 que en este caso serA la 'ase de datos transportes0 la misma que *a se encuentra creada con+untamente con las ta'las de Ciudad * Huta, Seleccionamos la pesta@a Service la carpeta !rivers, * en

!ata'ases seleccionamos

8) Para agregar el concetor MES7L0 =aga clic en el 'otn derec=o del mouse en el
nodo o carpeta !rivers * seleccione la opcin NeG Driver.

9) AparecerA el cuadro de diAlogo para agregar un conector, !ar clic en el 'otn de


comando Add.

10) &avegar =asta encontrar el conector0 seleccionado * dando clic en A'rir,


Ing. Mirko Manrique Ronceros P)%ina *+ de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

11) %n el cuadro de diAlogo para agregar el conector se mostrarA la in:ormacin del


conector seleccionado, 6uego dar clic en el 'otn de comado OJ,

12) $n nuevo nodo para el conector a 1*Sql0 aparecerA en la pesta@a Service ,

Ing. Mirko Manrique Ronceros

P)%ina ** de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

13) A=ora procederemos a conectarnos con la 'ase de datos de campeonatoue:a,


Seleccionamos el driver 1*SM6 * damos clic 'otn derec=o * elegimos la opcin C!nec#in% $ in%.

14) Se muestra un cuadro de diAlogo para esta'lecer el $H6 de la 'ase de datos usando
el siguiente :ormato> Ad=c1mE 3"1@@servidor1puerto@baseDatos donde servidor es la direccin IP Eo nom're de dominio del servidorF0 en caso que el servidor est; en la misma computadora que &et eans utili9a el nom're> "!ca"K! #D puerto es el puerto empleado por el servidor, Si el servidor utili9a el puerto prede:inido0 se puede omitirD baseDatos es la 'ase de datos a la que se desea conectar,

15) !amos clic en el 'otn de comando -Q, A continuacin aparecerA una ventana
con:irmando la cone(in con la 'ase de datos de campeonatoue:a, 6uego damos clic en el 'otn de comando OJ,

Ing. Mirko Manrique Ronceros

P)%ina *- de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

16) %n el entorno de &et eans se mostrarA un nuevo nodo de cone(in a la 'ase de


datos,

17) Si damos clicG en U respecto al nodo creado se visuali9arA la ta'la e(istente en la


'ase de datos de campeonatoue:a,

Ing. Mirko Manrique Ronceros

P)%ina *. de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Ing. Mirko Manrique Ronceros

P)%ina *2 de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

USO DEL ENTORNO DE NETBEANS PARA EL ACCESO DE LA BASE DE DATOS Y EL PAQUETE JAVA.SQL
Acce ! a "a =a e de da#! de de Ne#9ean
&et eans nos permite =acer operaciones so're la 'ase de datos como crear * 'orrar ta'las0 agregar * eliminar columnas0 agregar0 modi:icar * eliminar registros de datos como reali9ar consultas, Kamos a proceder =acer algunas operaciones> ), %(panda el nodo con la cone(in a la 'ase

de datos,

2,

-'servamos en la :igura anterior las re:eridas EvistasF a .a'les * Eta'lasF0 Procedures

carpetas Kie/s

EprocedimeintosF, Si e(pandimos el nodo re:erido a .a'les veremos la ta'la estadio,

Ing. Mirko Manrique Ronceros

P)%ina *4 de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica 3,

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Si seleccionamos el nodo re:erido a .a'les * damos clic 'otn derec=o0 se muestra un

men2 :lotante * luego elegimos la opcin Crea#e Ta="e,

4, Kamos a proceder a crear la ta'la de %quipo con los campos codequipo int0 nom're OJ, varc=arE40F0 representante varc=arE32F0 entrenador varc=arE40F0 grupo c=arE)F * estado 'it, $na ve9 indicado los campos damos clic en el 'otn de comando

3,

Kolvemos al entorno de &et eans * o'servamos en la pesta@a de Services la nueva ta'la de %quipo,

Ing. Mirko Manrique Ronceros

P)%ina *5 de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

6,

Si deseamos insertar un registro a una de las ta'las a trav;s del comando in er#0 seleccionamos el nodo re:erido a .a'les, !ando clic 'otn derec=o se muestra un men2 :lotante * luego seleccionamos la opcin EIec$#e C!mmand...

4,

%scri'imos el comando para insertar un nuevo registro en la ta'la de %quipo0 luego procedemos a e+ecutarlo,

Ing. Mirko Manrique Ronceros

P)%ina *< de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica #,

Tecn!"!%&a C"ien#e'Servid!r c!n Java

6uego si escri'imos el comando select para consultar los datos de la ta'la Ciudad0 o'servaremos el contenido de dic=a ta'la,

Como verAn el entorno de &et eans nos o:rece la oportunidad de acceder * manipular los datos * las estructuras de los elementos que con:orman una 'ase de datos, A=ora ustedes mismos0 en 'ase a la e(periencia de los conocimeintos adquiridos en los cursos re:erentes a 'ase de datos0 procedan a e(perimientar el entorno grA:ico que nos o:rece &et eans,

Ing. Mirko Manrique Ronceros

P)%ina *> de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Pa3$e#e Java.S7L 0ara #ra=aAar c!n =a e de da#!


Para reali9ar una aplicacin para que realice cualquier operacin de lo mAs sencilla posi'le se necesita de la utili9acin de varias clases e inter:ases, "! C o:rece el paquete +ava,sql en la que e(isten clases e inter:aces mu* 2tiles para tra'a+ar con 'ase de datos, Keamos las mAs importantes clases o inter:ases * en la medida en que se desarrolle las sesiones se detallarAn mAs mencionando los m;todos que tienen para =acer :Acil el acceso a la 'ase de datos, I 6a clase "riverManager 0 permite llevar a ca'o una cone(in con la 'ase de datos logrando cargar un driver, %(isten varios m;todos para ello0 entre las cuales se destacan> pu'lic static s*nc=roni9ed Connection getConnectionEString urlF t=ro/s SM6%(ception pu'lic static s*nc=roni9ed Connection getConnectionEStrin url0String user0 String

pass/ordF t=ro/s %l primero de los m;todos reci'e como parAmetro la direccin $H6 que identi:ica la 'ase de datos, %n el caso en que sea necesario proporcionar un usuario * una contrase@a para acceder a la 'ase de datos Ecomo sucede en 1*SqlF se utili9a el segundo de los m;todos, $na direccin $H6 "! C proporciona un m;todo de locali9acin de 'ases mu* parecido al que representan las direcciones $H6 que identi:ican sitios ?e' de Internet, 6os controladores "! C tienen que ser capaces de conectar con la 'ase de datos a partir de la in:ormacin contenida en la direccin $H6 "! C de la misma0 por lo que son los desarrolladores los que :i+an en la ma*or7a de los casos la sinta(is, I 6a inter:a9 Connection0 cuando se utili9a uno de los m;todos anteriormente mencionados se o'tiene un o'+eto de tipo Connection que representa como es de esperar la cone(in con la 'ase de datos, %l o'+eto o'tenido cuenta con varios m;todos, !os de los mAs importantes son> pu'lic a'stract Statement createStatementEF t=ro/s SM6%(ception pu'lic a'stract void closeEF t=ro/s SM6%(ception %l primero de los m;todos sirve para crear un o'+eto del tipo Statement, 6as :rases SM6 se e+ecutan normalmente mediante la utili9acin de o'+etos del tipo Statement, Jinalmente0 es conveniente cerrar las cone(iones tan pronto como de+en de utili9arse para li'erar recursos, &o o'stante0 =a de tenerse en cuenta que esta'lecer una cone(in es una operacin costosa0 por lo que tampoco se de'e estar a'riendo * cerrando la cone(in con :recuencia,

Ing. Mirko Manrique Ronceros

P)%ina -, de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica I 6a inter:a9 State%ent0 los o'+etos de

Tecn!"!%&a C"ien#e'Servid!r c!n Java tipo Statement permiten reali9ar consultas *

e:ectuar operaciones de actuali9acin0 'orrado o insercin de datos, %n algunos casos es interesante tam'i;n :i+ar ciertos parAmetros vinculados con la consulta que se desea reali9ar0 como por e+emplo el tiempo que estamos dispuestos a esperar a que el gestor de la 'ase de datos devuelva el resultado de la consulta, 6os m;todos que se citan a continuacin son algunos de los mAs importantes para llevar a ca'o todas estas acciones, pu'lic a'stract HesultSet e(ecuteMuer*EString sqlF t=ro/s SM6%(ception %+ecuta una sentencia S%6%C. * devuelve el resultado mediante la inter:a9 HesultSet pu'lic a'stract int e(ecute$pdateEString sqlF t=ro/s SM6%(ception %+ecuta una sentencia $P!A.%0 !%6%.%0 I&S%H. o cualquier otra sentencia SM6 que la sentencia, pu'lic a'stract void set1a(Ho/sEint ma(F t=ro/s SM6%(ception %sta'lece el n2mero mA(imo de registros que puede devolver e(ecuteMuer*EF pu'lic a'stract int get1a(Ho/sEF t=ro/s SM6%(ception !evuelve el n2mero mA(imo de registros que puede devolver e(ecuteMuer*EF pu'lic a'stract void setMuer*.imeoutEint secondsF t=ro/s SM6%(ception %sta'lece el tiempo en segundos que el controlador esperarA =asta que el sistema gestor de 'ases de datos devuelva un resultado pu'lic a'stract int getMuer*.imeoutEF t=ro/s SM6%(ception !evuelve el tiempo en segundos que el controlador esperarA =asta que el sistema gestor de 'ases de !atos devuelva un resultado pu'lic a'stract void closeEF t=ro/s SM6%(ception 6i'era los recursos asociados a la sentencia I 6a inter:a9 ResultSet0 el m;todo e(ecuteMuer* que se utili9a para e+ecutar con no

devuelva un con+unto de registros0 * devuelve el n2mero de registros a:ectados por

sentencias SM6 devuelve un o'+eto de tipo HesultSet, ]ste contiene las :ilas o registros o'tenidos al e+ecutar una sentencia S%6%C., Para recuperar los datos contamos Ing. Mirko Manrique Ronceros

P)%ina -+ de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

muc=as opciones, .odos los m;todos :uncionan de la misma manera, .oman como parAmetro el 7ndice o el nom're del campo que se desea o'tener * devuelven el dato en cuestin, pu'lic a'stract String getStringEint columnInde(F t=ro/s SM6%(ception pu'lic a'stract String getStringEString column&ameF t=ro/s SM6%(ception pu'lic a'stract int getIntEint columnInde(F t=ro/s SM6%(ception pu'lic a'stract int getIntEString column&ameF t=ro/s SM6%(ception AdemAs0 pu'lic e(isten otros m;todos gracias a los cuales es posi'le recorrer los

resultados guardados en el o'+eto de tipo HesultSet, a'stract int :indColumnEString column&ameF t=ro/s SM6%(ception !evuelve el n2mero de columna cu*o nom're se pasa como parAmetro pu'lic a'stract 'oolean ne(tEF t=ro/s SM6%(ception $n o'+eto de tipo HesultSet puede contener mAs de un resultado, Para ir avan9ando por la lista de resultados utili9amos este m;todo0 que devuelve un valor indicando si e(iste otro resultado o no, pu'lic a'stract 'oolean /as&ullEF t=ro/s SM6%(ception Indica si el contenido de la 2ltima columna accedida es &$66 SM6 pu'lic a'stract void closeEF t=ro/s SM6%(ception 6i'era los recursos asociados al HesultSet Kamos a proceder a visuali9ar en o'+etos "list0 los datos contenidos de la ta'la de %quipo, )F para Creamos un ":rame a'rir un

o'+eto

nuevo :ormulario,

Ing. Mirko Manrique Ronceros

P)%ina -* de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

2F Indicamos como nom're de clase :ormulario> :rmver%quipos, 6uegos damos clicG en el 'otn de comando Jinis=,

Muedando el entorno de &et eans de la siguiente manera>

3F

!amos clic 'otn derec=o so're el dise@o del :ormulario para cam'iar el li'remente,

Se#

LaE!$# a &'soluteLa$out0 lo cual nos permitirA usar los o'+etos de control mAs

Ing. Mirko Manrique Ronceros

P)%ina -- de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

4F

Colocamos los o'+etos de control quedando el dise@o del :ormulario de la siguiente manera>

3F

orramos los Items de cada o'+eto "list * colocamos los nom'res a cada o'+eto de control, Hecuerden que para eliminar los items de cada "list =a* que =acer uso de model que se encuentra en la ventana de propiedades,

Ing. Mirko Manrique Ronceros

P)%ina -. de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

6F A continuacin procedemos a colocar la programacin,

%n la primera llave Ecolor ro+oF o'servamos que importamos los paquetes +ava,sql Etodo lo que aca'amos de verF * el paquete +ava(,s/ing para poder utili9ar la clase "optionPane para la visuali9acin de un mensa+e a trav;s de su m;todo S=o/1essage!ialog, %n la segunda llave se de:ine las varia'les que se van a usar, Kendr7a =acer los atri'utos de la clase (r%Ver)qui*o, Como tenemos esta'lecer cone(in usaremos un o'+eto Connection EconnF0 para =acer una operacin de consulta usaremos un o'+eto Statement EstF * para almacenar los resultados de la consulta usaremos un o'+eto HesultSet ErsF, Como la aplicacin =ace uso de los "list se tiene crear 4 o'+etos instanciados de la clase !e:ault6ist1odel Ema*or in:ormacin en la sesin 4 del curso de Programacin KisualF, Posteriormente preparamos varia'les para indicar el nom're de la 'ase de datos0 el login0 el pass/ord * el url, %n la tercera llave se =a dise@ado un m;todo denominado %nlace que permitirA esta'lecer cone(in con la 'ase de datos campeonatoue:a, Ing. Mirko Manrique Ronceros P)%ina -2 de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

4F 6a clase :rmKer%quipo tienen un m;todo del mismo nom're :rmKer%quipoEF0 esto es lo que se denomina m;todo constructor, !eseamos que los datos se muestren en los o'+etos "list al momento de la e+ecucin del :ormulario de'emos programar en el m;todo antes mencionado,

6os o'+etos instanciados de la clase !e:ault6ist1odel de'en ser vinculados a cada uno de las ca+as de listas, 6uego usando el 'loque tr*T Y que por cierto sirve para interceptar errores * si lo =u'iera e+ecutar7a lo programado en el 'loque catc=T Y0 esta'lecemos lacone(in usando el m;todo %nlace0 creamos el o'+eto st de tipo Statement Ese encuentra listo para reli9ar una operacinF * luego e+ecutamos una sentencia de consulta con select cu*o resultado va ocasionar que los datos se almacenen en el o'+eto rs del tipo HesultSet, Jinalmente con el m;todo ne(t se logra despla9ar a trav;s de los registros de datos para ir llenado los o'+etos modelo)0 modelo20 modelo3 * modelo4 * de esta :orma llenamos los o'+etos "list lo que nos permitirA ver en el :ormulario los datos de la ta'la de %quipo,

Ing. Mirko Manrique Ronceros

P)%ina -4 de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

#F Hecuerda que en la sesin anterior slo se agreg un registro a la ta'la de %quipo, Si gustan ingresen mAs registros a la ta'la de %quipo * o'servarAn los resultados, Si e+ecutamos la aplicacin o'servamos lo siguiente>

Ing. Mirko Manrique Ronceros

P)%ina -5 de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

OBJETO DE CONTROL JTABLE EN MANTENIMIENTO DE DATOS


O=Ae#! de c!n#r!" JTa="e
6a presentacin de datos ta'ulados es una de las tareas mAs comunes que se presentan al momento de crear inter:aces grA:icasD desde la simple ta'la que permite 2nicamente mostrar el resultado de una consulta0 =asta las que permiten editar directamente el contenido de cada celda0 ordenar las columnas0 personali9ar su apariencia0 etc, .odas las tareas antes descritas0 * muc=as otras0 son posi'les de reali9ar utili9ando la clase ".a'leD por supuesto0 mientras mAs comple+o sea el requerimiento a cu'rir0 se requerirA en igual medida utili9ar mAs m;todos o recursos de la clase, %l o'+eto "ta'le como los !odelos de la ta'la representados a trav;s de la inter:a9 Ta="eM!de"0 pertenecen al paquete +ava(,s/ing, %l siguiente grA:ico intenta mostrar como cada componente ".a'le o'tiene siempre sus datos desde un !odelo de tabla,

%l .a'le1odel se implementa a partir de la clase A'stract.a'le1odel0 aunque e(iste un modelo de ta'la predeterminado denominado la clase !e:aiult.a'le1odel, 6as propiedad mAs usada es %odel que permite de:inir el numero de :ilas * columnas0 siendo los m;todos mAs usados> setModel+,- que permite vincular un modelo al o'e+to "ta'le * getRo.Count+,0 devuelve el n2mero de :ilas en la ta'la, Para la clase !e:ault.a'le1odel los m;todos mAs utili9ados son> &ddRo.+,0 a@ade una :ila al :inal del modelo0 getRo.Count+, devuelve el n2mero de :ilas de la ta'la de datos0 getValue&t+, devuelve el dato u'icado en la posicin :ila * columna * removeHo/EF elimina una :ila del modelo seg2n posicin indicada,

Ing. Mirko Manrique Ronceros

P)%ina -< de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Man#enimien#! de Da#! $ and! JTa="e c!m! vi #a de da#!


$n mantenimiento de datos consiste en gra'ar datos en una ta'la0 eliminar datos correspondiente a un registro de datos como tam'i;n modi:icar datos *a almacenados, Pero para eliminar datos o modi:icar datos se supone que los datos *a e(isten en la ta'la de datos entonces se procedera =acer '2squedas sencillas para lograr su u'icacin * proceder a su eliminacin o modi:icacin de datos, %n esta sesin =aremos uso del reciente e(plicado o'+eto ".a'le para visuali9ar los datos contenidos en una ta'la, A continuacin vamos a seguir usando la 'ase de datos de campeonatoue:a *a utili9ada desde la tercera sesin de aprendi9a+e> ), Kamos a crear la ta'la de estadio en la 'ase de datos campeonatoue:a, 6a instruccin para la creacin de dic=a ta'la es> crea#e #a="e e #adi!Bc!de #adi! in# n!# n$"" 0rimarE LeE a$#!Mincremen#; n!m=re varcKarB.,C n!# n$""; ede varcKarB-*C n!# n$""; 0ai varcKarB*,C n!# n$""; e #ad! =i#CF Ca'e se@alar que los campos re:eridos a la sede * al pais pudieron =a'er sidos ta'las que se relacionen con la ta'la de estadio, 6o importante es como =acer mantenimiento de datos a una ta'la0 la normali9acin que se pueda =acer a las ta'las que irAn creando en la 'ase de datos campeonatoue:a queda para las modi:icaciones que crean convenientes, 2, 6ogremos esta'lecer la cone(in con la 'ase de datos de campeonatoue:a en el entorno de &et eans,

Ing. Mirko Manrique Ronceros

P)%ina -> de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

3,

Kolvamos a la pesta@a Pro*ects donde vamos a crear m;todos en la clase 1ain0 necesarios para la cone(in con la 'ase de datos * el enlace con la ta'la de estadio,

Agregamos los paquetes> +ava,io0 +ava,sql * +ava(,s/ing, %ste 2ltimo paquete es necesario para el uso de los o'+etos del paquete s/ing principalmente el "-ptionPane para la visuali9acin de posi'les mensa+es de error, %stando dentro de la clase 1ain esta'lecemos las varia'les conn del tipo Connection0 st del tipo Statement * rs del tipo HesultSet *a descritos * esplicados en las sesiones anteriores, .am'i;n de:inimos las vari'ales 'd0 login0 pass/ord * url, A continuacin creamos el primer m;todo estAtico denominado )nlace que devolverA un o'+eto del tipo Connection, %ste m;todo nos a*udarA esta'lecer la cone(in con la 'ase de datos campeonatoue:a, Seguimos a continuacin agregando mAs m;todos a la clase 1ain,

Ing. Mirko Manrique Ronceros

P)%ina ., de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Se crea el m;todo sta que devolverA un o'+eto del tipo Statement, del m;todo createState%ent+,. Jinalmente se necesita tener

Asicamente un m;todo

permite crear el o'+eto del tipo Statement a partir del o'+eto c!nnec#i!n a trav;s denominado )nl)st que permitirA enla9arnos con la ta'la de %stadio aplicando el m;todo e/ecute uer$+, esta'leciendo a trav;s del comando select a todos los campos de la ta'la de %stadio solo aquellos cu*o estado es igual a )0 es decir0 los estadios que estAn =a'ilitados para su uso, Si o'servamos en cada uno de los m;todos se esta usando t=ro/s SM6%(ception0 esto quiere decir que los m;todos usan e(cepciones Eintercepcion de erroresF para los erroes que se pueden presentar durante la cone(in * acceso de datos, 4, 6a ta'la de %stadio posee realmente cinco campos0 pero el 2ltimo es para indicar si el estadio esta =a'ilitado para su uso o no lo estA0 estom quiere decir si =acemos una elimnacin se procederA a cam'iar el estado a 0 Eelimacin lgicaF * gra'emos los datos de un nuevo estadio se =a'ilitarA, Kamos a dise@ar el siguiente :ormulario al cual lo llamaremos :rm1ant%stadio dando los nom'res correspondientes a cada uno de los o'+etos de control di'u+ados, cada ve9 que

Ing. Mirko Manrique Ronceros

P)%ina .+ de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

3, Kamos a proceder a programar0 colocando las siguientes l7neas de cdigo,

Importamos los paquetes +ava,sql Epara acceder a 'ase de datosF0 +ava(,s/ing Epara el uso de los controles visualesF0 +ava(,s/ing,ta'le para el mane+o de las clases del paquete ta'le * el paquete campeonato^ue:a que contiene a la clase 1ain con lo cual podremos =acer uso de todos los m;todos que tenga,

Ing. Mirko Manrique Ronceros

P)%ina .* de +,,

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Iniciamos la construccin de la clase :rm1ant%stadio0 esta'leciendo como varia'les o atri'n'utos conn0 st * rs, Como se estA utili9ando un o'+eto ".a'le se de:ine la varia'le dt% del tipo De(a$"Ta="eM!de", %n el m;todo constructor =acemos uso del m;todo ac#iva=!#!ne Eprogramacin que veremos luegoF0 se esta'lece un vector o arreglo del e#C!"$mnIden#i(ier indicamos los datos del vector titulos e#L!ca#i!n es para esta'lecer el tipo String donde se coloca los t7tulos que serAn de cada una de las columnas del o'+eto JTa="e, A partir del m;todo al o'+eto dt% * con el m;todo set1odel vinculamos el o'+eto dt% al o'+eto ".a'le denominado ta'la)stadio, 6os m;todos e#SiNe * tama@o * la locali9acin del :ormulario en la pantalla del computador,

%l m;todo ac#iva9!#!ne

es para =a'ilitar o in=a'ilitar el uso de los 'otones de se

comando0 esto dependerA en que circunstancias nos encontremos en la e+ecucin de la aplicacin de mantenimiento de datos de %stadios, Con el m;todo "im0iarDa#! limpia los cuadros de te(tos,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

%n el 'otn de comando =#n9$ car si estA =a'ilitado despu;s de dar clic en dic=o 'otn0 se procederA a la cone(in con la 'ase de datos0 luego en la varia'le rs se almacenarA los datos provenientes de la ta'la de %stadio, %n la varia'le ' se coloca el valor ingresado en el cuadro de te(to #I#C!dE #, Se de:ine una varia'le 'oleana encuentra para mane+ar la situacin de ;(ito o :racaso de la '2squeda, %n la sentencia /=ile utili9amos el m;todo ne(t que pertenece al o'+eto rs0 es decir0 es un m;todo neI# devuelve m;todo de la inter:a9 HesulSet, %l verdadero si encuentra la primera :ila de in:ormacin0 las

siguientes veces se despla9a en cada registro almacenado en el rs, 6a sentencia i: que se encuentra dentro del /=ile0 su condicin lgica se =arA verdadero cuando encuentre el cdigo de estadio 'uscado0 =aciendo que los cuadros de te(tos se muestren los demAs datos0 es entonces que la varia'le encuentra reci;n se =ace verdadero, Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

%l 'otn de comando 'tnKer EKer 6ista de %stadiosF0 consiste en aumentar el tama@o del :ormulario para visuali9ar el o'+eto ".a'le, Posteriormente se esta'lece la cone(in con la 'ase de datos * en la varia'le rs se almacena los datos provenientes de la ta'la de %stadio, Se de:ine un vector denominado datos de tama@o 3 elementos del tipo String que servirA colocar los datos de una :ila para luego agregarlo al o'+eto dt% que estA vinculado al o'+eto ".a'le llamado ta'la)stadio, Pero antes de agregarlo de'emos asegurarnos que no e(ista :ila alguna de datos en el modelo dt% * por ende en la ta'la)stadio, %l 'ucle de la sentencia /=ile permite colocar en cada elemento del arreglo los datos e(traidos de una :ila que almacena el o'+eto rs- esto es posi'le *a que el m;todo getString0 indicando la posicin de la columna0 podemos o'tener el dato de la :ila actual,

Con el m;todo addHo/ logramos crear una :ila con los datos del vector datos en el o'+eto dtm * como estA vinculado a la ta'la%stadio entonces se podrA ver los registros agregados, Para el 'otn de comando =#nN$ev!0 limpiamos los cuadros de te(tos con el m;todo limpiar-'+etos, Se in=a'ilita el cuadro de te(to #I#C!dE # * se env7a el cursor al cuadro de te(to #I#N!m, Se in=a'ilta los 'otones de comando a e(cepcin de gra'ar *a que estamos en el momento de ingresar nuevos datos * proceder a almacenar,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

%n el 'otn de comando =#nGra=ar se inicia visuali9ando un mensa+e de con:irmacin para proceder a gra'ar0 esto se logra usando el m;todo K!GC!n(irmDia"!% de la 'ase de datos clase "optionPane, Si la respuesta es S7 entonces la sentencia i: su condicin lgica se =arA verdadera * por lo tanto esta'lecemos cone(in con la campeonatoue:a0 pasamos los datos ingresados a varia'les como no%0 sede * *ais, %n la varia'le comando esta'lecemos la instruccin con el comando I&S%H. para luego usar el m;todo e/ecute0*date quien procederA a gra'ar los datos, Posteriormente se procede a cerrar la cone(in con el m;todo c"! e del o'+eto connection conn,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

%n el 'otn de comando =#nE"iminar0 tam'i;n se procede a trav;s de un mensa+e con:irmar si procede la eliminacin de los datos del %stadio, Si la respuesta es a:irmativa se procede a cone(tarse a la 'ase de datos * en la varia'le de memoria cod se almacenada el cdigo del estadio ingresado a trav@es del cuadro de te(to t(tCod%st, Se constru*e la instruccin usando el comando $P!A.%0 luego e+ecutamos la eliminacin lgica =aciendo que el campo estado sea igual a cero * se cierra la cone(in con la 'ase de datos,

%n el 'otn de comando =#nM!di(icar0 al igual que de gra'ar o eliminar se procede a con:irmar a trav;s de un mensa+e si se procede a la modi:icacin de datos, $na ve9 salvados los datos ingresados en los cuadros de te(tos en varia'les de memoria se prepara la instruccin en la varia'le de memoria co%ando, $samos el comando $P!A.% para actuali9ar los datos, Se procede a e+ecutar el comando con el m;todo eIec$#eU0da#e * se cierra la cone(in con el m;todo c"! e,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

%n el 'otn de comando Cancelar0 luego de dar respuesta a:irmativa se procede a limpiar los cuadros de te(tos0 =a'ilta el cuadro de te(to t(tCod%st para su uso * se vuelve a su estado inicial la =a'litacin de los 'otones de comando,

%l 'otn de comando =#nCerrar0 con el m;todo dispose se cierra la ventana o :ormulario, 6, Procedemos a e+ecutar el :ormulario0 seleccionado Hun Jile,

4, -'servamos el :ormulario e+ecutado,

#, Al dar clic en el 'otn de comando &uevo podemos proceder a ingresar datos, $na ve9 ingresado damos clic en el 'otn de comando Lra'ar,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

5,

6uego de gra'ar0 al dar clic en el 'otn de comando Ker 6ista de %stadios0 el :ormulario se mostrarA de la siguiente :orma,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

SWING MENUS Y MANTENIMIENTO DE DATOS USANDO VARIAS TABLAS


L! !=Ae#! SGin% Men$
%n todo desarrollo de un pro*ecto de un sistema in:ormAtico se de'e construir men2s que permita al usuario interaccionar con las opciones del sistema, Aqu7 podemos ver el Ar'ol de =erencias de las clases relacionadas con los men2s>

.enemos el "menu ar que permite iniciar el dise@o del men20 Se crea por de:ecto un o'+eto "menu que permitirA a partir de este crear las opciones0 las cuales se crearAn con los o'+etos "menuItem,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Man#enimien#! de da#! $ and! varia #a="a


%sta sesin a'arca el desarrollo de un mantenimiento de datos usando mAs de una ta'la Siguiendo la sesin anterior =aremos uso de la 'ase de datos campeonatoue:a de 1*Sql0 $sar varias ta'las no implica que se de'a =acer mantenimiento de datos a todas a la ve9, 6a 'ase de datos de campeonatoue:a *a tiene la ta'la de %stadio0 agregaremos la ta'la de %quipo, Con las ta'las de %stadio * %quipos podremos =acer la programacin de los encuentros0 para ello crearemos la ta'la de Programacion, Para =acer el mantenimiento de datos de la ta'la de Programacin necesitaremos sa'er qu; estadios estAn disponi'les * cuales son los equipos participantes para el encuentro, Slo se tendrA en cuenta la etapa eliminatoria del campeonato, Kamos a proceder a crear las ta'las * luego a construir la aplicacin> ), Creamos las ta'las de %quipo usando el entorno de &et eans,

2, $sando la opcin EIec$#e C!mmand escri'imos>

3, %+ecutamos la instruccin0 Ing. Mirko Manrique Ronceros

luego

aplicamos

una

actuali9acin

EHe:res=F

para

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica visuali9ar la nueva ta'la,

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Posteriormente vemos la nueva ta'la en la pesta@a Services

4, &uevamente usando la opcin EIec$#e C!mmand0 escri'imos>

3, %+ecutamos la instruccin0 aplicamos He:res= * luego visuali9amos la nueva ta'la,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

6.

Kamos a crear un :ormulario denominado :rmPrincipal0 donde dise@aremos el siguiente men2>

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

4, !ise@amos el siguiente :ormulario que se denominarA :rmProgramacionPartidos,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

%l cuadro de te(to re:erido al numero de programacin tiene como nom're #I#Nr!Pr!0 para la :ec=a de encuentro #I#FecKa0 para el "Com'o o( de la etapa de campeonato tiene como nom're c=!E#a0a0 para el "Com'o o( re:erido a grupo se denomina c=!Gr$0!0 para el o'+eto "6ist re:erido al %quipo ) se llama " #E3$i0!+0 para el o'+eto "6ist re:erido al %quipo2 se denomina " #E3$i0!*0 para el cuadro de te(to de la =ora programada se llama #I#/!ra0 para el o'+eto "com'o o( re:erido a los estadios se llama c=!E #adi! 0 para los para el o'+eto "c=ecG o( re:erido a Suspendido se denomina se denomina #a="aPr!%ramaci!n. de cKLS$ 0endid! * para el o'+eto ".a'le Jinalmente 'otones

comando que reali9arAn el mantenimiento de datos de Programacin de Partidos se denominan> =#nN$ev!0 =#n9$ car0 =#nM!di(icar0 =#nGra=ar0 =#nCance"ar * =#nCerrar, #, Kamos a proceder a agregar los m;todos en la clase 1ain que utili9aremos para el mantenimiento de datos de la Programacin de Partidos,

Para o'tener los registros de datos de aquellos encuentros que estAn programados

Para o'tener los equipos que pertenecen a un grupo indicado, Cada grupo de'e estar con:ormado por 4 equipos,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Para o'tener el nom're del equipo dado el cdigo del equipo

Keri:ica si el encuentro entre un equipo * otro *a :ue programado, %sta consulta construida a partir del comando select utili9a el concepto de su'consultas, Cuando tratemos el tema de consulta de datos se e(plicarA la construccin de sentencias que usan varias ta'las,

Para o'tener el cdigo del equipo dado el nom're del equipo, %ste m;todo nos servirA al momento de gra'ar datos,

Para o'tener el cdigo del estadio dado el nom're del estadio, %ste m;todo nos servirA al momento de gra'ar o modi:icar datos, 5, Keamos a continuacin el cdigo de la programacin que tendrA el :ormulario :rmProgramacionPartidos, a, Agregar los paquetes antes de la de:incin de la clase :rmProgramacionPartidos,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

', !e:inir los atri'utos o varia'les a usar en los distintos m;todos que :orma la clase :rmProgramacionPartidos

c, %l m;todo constructor :rmProgramacionPartidosEF de'e quedar de la siguiente manera>

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

d, Construimos los m;todos activa otones * limpiar-'+etosEF

e, !ise@amos el m;todo llenar6istasEF para mostrar los posi'les encuentros dado los 4 equipos que con:orman un grupo,

:, .am'i;n se tienen el m;todo llenar.a'laEF para llenar de datos en la :ilas del o'+eto ".a'le denominado ta'laProgramacion,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

g, Cuando se seleccione una etapa del campeonato0 como por e+emplo eliminatoria se =a'ilitarA el uso del o'+eto +Com'o o( llamado c'oLrupo,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

=, A=ora vamos a proceder a programar en cuando se seleccione el grupo, &o se indicarA todo el cdigo *a que codi:icar para cuando se seleccione el grupo A0 lo mismo sucederA con los demAs grupos que con:orma la etapa eliminatoria del campeonato,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

%n este 2ltimo i: que o'servamos =acemos lo mismo para el grupo sucesivamente =asta el grupo H,

* as7

i, %l 'otn de comando

uscar es para la '2squeda de una Programacin de un

encuentro0 cu*a programacin es la siguiente,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Continuamos con la programacin ,,,,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

+, Cuando se seleccione un equipo en la ca+a de lista lst%quipo) se procederA a 'uscar si el encuentro *a :ue programado o no,

Se =ace lo mismo si la seleccin se =ace del equipo en la ca+a de lista lst%quipo2, G,

Para el 'otn de comando Cancelar procedemos a programar lo siguiente>

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

l, Para el 'otn de comando Lra'ar procedmeos a codi:icar lo siguiente>

continuamos ,,,

m, Para el 'otn de comando &uevo colocamos el siguiente cdigo>

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

n, Para el 'otn de comando 1odi:icar escri'imos el siguiente cdigo>

)0, Kamos a proceder a e+ecutar el :ormulario desde el menu,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

MANTENIMIENTO DE DATOS USANDO PROCEDIMIENTOS ALMACENADOS


Pr!cedimien#! a"macenad!
Poco a poco las empresas * muc=as personas en general empie9an a mirar mAs =acia el So:t/are 6i're * se dan cuenta que e(isten e(celentes alternativas a distintos programas que para ellos son de uso :recuente en otro Sistema -perativo0 como pueden ser -pen-::ice0 1o9illa Jire:o(0 %clipse0 &et eans0 PostgreSM60 PHP * 1*SM6 por citar algunos0 en esta nota =a'lar; un poco del 1ane+ador de ases de datos 1*SM60 que en los 2ltimos a@os =a tenido grandes avances en su desarrollo * actualmente es uno de los ! 1S mAs usados en sitios /e' * que en sus 2ltimas versiones =a incorporado nuevas caracter7sticas como la implementacin de las ta'las0 disparadores0 :unciones * procedimientos almacenados, 6os procedimientos almacenados son de gran utilidad para reali9ar tareas :recuentes en una 'ase de datos0 es sorprendente la cantidad de tiempo que se puede llegar a a=orrar al =acer uso de este mecanismo, In#er(ace Pre0aredS#a#emen# %ste componente permitirA =acer uso de los procedimientos almacenados, $na ve9 instanciado el o'+eto usaremos el m;todo *re*aredState%ent para invocar el uso de un procedimiento almacenado, .am'i;n se =arA uso de los m;todos setStringEF0 setIntEF0 set!ateEF0 etc para indicar la posicin del parAmetro * el valor de dic=o parAmetro, Jinalmente almacenado, A continuacin0 procedemos a dise@ar el mantenimiento de datos de la ta'la de Ar'itro usando procedimientos almacenados> ), Creamos la ta'la de Ar'itro dentro de la 'ase de datos campeonatoue:a> usaremos el m;todo e(ecute$pdateEF para e+ecutar el procedimiento

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

2,

Procedemos a crear el procedimiento almacenado sp^gra'aAr'itro que permitirA la gra'acin de datos cuando se inserte un registro de datos en la ta'la de Ar'itro,

$na ve9 e+ecutado la creacin del procedimeinto almacenado se o'servarA en la pesta@a de Services que dic=o procedmiento se =a creado,

3.

6uego0 procedemos a crear el procedimeinto almacenado sp^modi:icaAr'itro que permitirA modi:icar o actuali9ar los datos de la ta'la de Ar'itro,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

$na ve9 e+ecutado la creacin del procedimeinto almacenado se o'servarA en la pesta@a de Services que dic=o procedmiento se =a creado,

4,

Posteriormente0 procedemos a crear el procedmiento almacenado sp^eliminaAr'itro que permitirA =acer una eliminacin lgica del registro de datos,

$na ve9 e+ecutado la creacin del procedimeinto almacenado se o'servarA en la pesta@a de Services que dic=o procedmiento se =a creado,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

3, %n el :ormulario :rmPrincipal que contiene el dise@o del men20 u'icamos la opcin Ar'itro dentro de 1antenimientos,

6, Seleccionado

Ar'itro

dando

clic

'otn

derec=o

del

mouse

elegimos

Even# @Ac#i!n@Ac#i!nPer(!rmed,

6uego0 escri'imos el siguiente cdigo>

4, !ise@amos el siguiente :ormulario denominado :rm1antAr'itro,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

#, %n la clase 1ain colocar el m;todo En"Ar=BC,

5,

Kamos a proceder a programar en el :ormulario :rm1antAr'itro colocando las siguientes l7neas de cdigo>

Importamos los paquetes +ava,sql Epara acceder a 'ase de datosF0 +ava(,s/ing Epara el uso de los controles visualesF0 +ava(,s/ing,ta'le para el mane+o de las clases del paquete ta'le * el paquete campeonato^ue:a que contiene a la clase 1ain con lo cual podremos =acer uso de todos los m;todos que tenga,

Preparamos las varia'les para el acceso de datos> conn0 st0 rs, %n el m;todo constructor :rm1antAr'itroEF preparamos las columnas del o'+eto ".a'le * damos al :ormulario su tama@o * u'icacin dentro de la pantalla,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

6os m;todos activa otonesEF permitirA gestionar el uso de los 'otones de comando * el m;todo limpiar!atosEF es para limpiar los cuadros de te(tos,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

%n el 'otn de comando =#n9$ car si estA =a'ilitado despu;s de dar clic en dic=o 'otn0 se procederA a la cone(in con la 'ase de datos0 luego en la varia'le rs se almacenarA los datos provenientes de la ta'la de Ar'itro, %n la varia'le ' se coloca el valor ingresado en el cuadro de te(to #I#C!dAr=, Se de:ine una varia'le 'oleana encuentra para mane+ar la situaci_on de ;(ito o :racaso de la '2squeda, %n la sentencia /=ile uti9amos el m;todo neI#BC que pertenece al o'e+to rs0 es decir0 es un de la inter:a9 HesulSet, %l m;todo neI# devuelve verdadero si encuentra la primera :ila de in:ormacin0 las siguientes veces se despla9a en cada registro almacenado en el rs, 6a sentencia i: que se encuentra dentro del /=ile0 su condicin lgica se =arA verdadero cuando encuentre el cdigo del Ar'itro 'uscado0 =aciendo que los cuadros de te(tos se muestren los demAs datos0 es entonces que la varia'le encuentra reci;n se =ace verdadero, m;todo

%l 'otn de comando 'tnKer EKer 6ista de Ar'itrosF0 consiste en aumentar el tama@o del :ormulario para visuali9ar el o'+eto ".a'le, Posteriormente se esta'lece la cone(in con la 'ase de datos * en la varia'le rs se almacena los datos provenientes de la ta'la de Ar'itro, Se de:ine un vector denominado datos de tama@o 6 elementos del tipo String que servirA colocar los datos de una :ila para luego agregarlo al Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

o'+eto dt% que estA vinculado al o'+eto ".a'le llamado ta'la&r'itro, Pero antes de agregarlo de'emos asegurarnos que no e(ista :ila alguna de datos en el modelo dt% * por ende en la ta'la&r'itro, %l 'ucle de la sentencia /=ile permite colocar en cada elemento del arreglo los datos e(traidos de una :ila que almacena el o'+eto rs- esto es posi'le *a que el m;todo getString0 indicando la posicin de la columna0 podemos o'tener el dato de la :ila actual, Con el m;todo addHo/ logramos crear una :ila con los datos del vector datos en el o'+eto dtm * como estA vinculado a la ta'laAr'itro entonces se podrA o'servar los registros agregados,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

%n el 'otn de comando =#nGra=ar se inicia visuali9ando un mensa+e de con:irmacin para proceder a gra'ar0 esto se logra usando el m;todo K!GC!n(irmDia"!% de la clase "optionPane, Si la respuesta es S7 entonces la sentencia i: su condicin lgica se =arA verdadera * por lo tanto esta'lecemos cone(in con la 'ase de datos campeonatoue:a0 pasamos los datos ingresados a varia'les como a*e0 no%0 (ec1a * nac, %n la varia'le *st%t esta'lecemos como procedimiento almacenado a s*2gra'a&r'itro0 colocando 4 signos de interrogacin que parAmetros que e(presa el mane+o de 4

tiene dic=o procedimiento, Con los m;todos setStringEF del o'+eto

instanciado *st%t indicamos la posicin del parAmetro * el valor del parAmetro0 as7 por e+emplo> ) indica ser el primer parAmetro de entrada del procedimeinto almacenado 0M%ra=aAr=i#r! * a*e m;todo e(ecute$pdateEF contiene que el dato apellido que el se asignarA al primer parAmetro, $na ve9 indicado los valores a cada uno de los parAmetros se =ace uso del permitirA e+ecutar procedimiento almacenado, Posteriormente se procede a cerrar la cone(in con el m;todo c"! e del o'+eto connection conn.

Para el 'otn de comando =#nN$ev!0 limpiamos los cuadros de te(tos con el m;todo limpiar-'+etos, Se in=a'ilita el cuadro de te(to #I#C!dAr= * se env7a el cursor al cuadro de te(to #I#N!m, Se in=a'ilta los 'otones de comando a e(cepcin de gra'ar,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

%n el 'otn de comando =#nE"iminar0 tam'i;n se procede a trav;s de un mensa+e con:irmar si procede la eliminacin de los datos del %stadio, Si la respuesta es a:irmativa se procede a conectarse a la 'ase de datos * en la varia'le de memoria cod se almacenada el cdigo del Ar'itro ingresado a trav;s del cuadro de te(to t(tCodAr', %n la varia'le *st%t esta'lecemos como procedimiento almacenado a s*2eli%ina&r'itro0 colocando un signo de interrogacin que e(presa el mane+o de un slo parAmetro0 luego se usa el m;todo setIntEF para indicar el valor del parAmetro * posteriormente se cierra la cone(in,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

%n el 'otn de comando =#nM!di(icar0 al igual que de gra'ar o eliminar se procede a con:irmar a trav;s de un mensa+e si se procede a la modi:icacin de datos, $na ve9 salvados los datos ingresados en los cuadros de te(tos en varia'les de memoria se procede a utili9ar el procedimiento almacenado s*2%odi(ica&r'itro, $samos el comando $P!A.% para actuali9ar los datos, Se procede a e+ecutar el comando con el m;todo eIec$#eU0da#e * se cierra la cone(in con el m;todo c"! e,

%n el 'otn de comando Cancelar0 luego de dar respuesta a:irmativa se procede a limpiar los cuadros de te(tos0 =a'ilta el cuadro de te(to t(tCodAr' para su uso * se vuelve a su estado inicial la =a'litacin de los 'otones de comando,

%l 'otn de comando =#nCerrar0 con el m;todo dispose se cierra la ventana o :ormulario, )0, Procedemos a e+ecutar el :ormulario desde el men2,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

TRANSACCIONES Y BUSQUEDAS CON BASE DE DATOS


Tran acci!ne c!n 9a e de Da#!
$no concepto que causa pro'lemas a los principiantes en el mundo del desarrollo de aplicaciones de 'ase de datos es la idea de transacciones, Jundamentalmente0 una transaccin representa una unidad de tra'a+o lgica, Como la principal responsa'ilidad de una 'ase de datos es preservar la in:ormacin0 necesita tener algo que le indique a un usuario que se de'e salvar el estado actual del programa, !e igual :orma0 cuando las cosas =an ido mal0 necesita una :orma para indicar que una 'ase de datos de'er7a ignorar el estado actual * volver a atrAs0 al estado del programa salvado anteriormente, %n el idioma de las 'ases de datos0 estas :unciones se llaman en#re%ar $na #ran acin * de Kacer $na #ran acin0 respectivamente, Para reali9ar estas tareas0 el API "! C inclu*e dos m;todos como parte del inter:ace Connection, !ando un o'+eto Connection llamado con0 el estado del programa se gra'a llamando a con.co%%it+,0 para volver al estado salvado anteriormente0 con.roll'ack+,, %stos dos m;todos pueden lan9ar SM6%(ceptions si algo va mal cuando la 'ase de datos realice realmente la operacin0 por eso necesitamos envolverlos en 'loques tr* ,,, catc=, Por de:ecto0 una cone(in :unciona en modo autocommit0 es decir0 cada ve9 que se e+ecuta una sentencia SM6 se a're * se cierra automAticamente una transaccin0 que slo a:ecta a dic=a sentencia, %s posi'le modi:icar esta opcin mediante set"utoCo!!it#$0 mientras que get"utoCo!!it#$ indica si se estA en modo autocommit o no, Si no se estA tra'a+ando en modo autocommit serA necesario que se cierren e(pl7citamente las trasancciones mediante %o!!it#$ si tienen ;(ito0 o roolba%&#$, %n un entorno mono<usuario0 las transaciones son 'astantes sencillas de entender << simplemente implican salvar o des=acer el estado de una aplicacin, Sin em'argo0 en modo multi<usuario0 las transaciones son mAs comple+as, 6a demostracin clAsica de una transacin multi<usuario es una cuenta 'ancaria donde una aplicacin estA intentando =acer un cargo mientras otra aplicacin estA intentando =acer un depsito en la misma cuenta, %n el caso del campeonatoue:a al momento de ingresar los datos de las incidencias de un encuentro o partido tendremos que gra'ar dos registros uno de cada equipo0 esto quiere decir que no se de'e permitir gra'ar las incedencias de un equipo * las incendencias del otro equipo no,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

9O 3$eda

de

da#!

c!n

0r!cedimien#!

a"macenad!

$ and!

Ca""a="eS#a#emen#
Para las '2squedas *8o o'tenciones de datos vamos a usar procedimientos almacenados, 6a novedad con el uso de los procedimientos almacenados es =acer uso de parAmetros de salida, %n esta oportunidad usaremos el inter:ace Calla'leStatement que permitirA tra'a+ar con procedimeintos almacenados que =acen uso del comando select, Kamos a usar el procedimiento almacenado s*2o'tenerCod)qui*o>

A continuacin0 procedemos a dise@ar el proceso de Incidencias de un %ncuentro o Partido usando procedimientos almacenados con la inter:a9 Calla'leStatement * transacciones>

), Creamos la ta'la de Incidencias dentro de la 'ase de datos campeonatoue:a>

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

6uego de e+ecutar la sentencia0 =acemos una actuali9acin usando He:res=,

-'servaremos la nueva ta'la creada,

2,

Procedemos a crear el procedimiento almacenado s*2actuali3aIncidencias que permitirA la gra'acin de datos cuando se inserte un registro de datos en la ta'la de Incidencias,

6uego de e+ecutar la sentencia0 =acemos una actuali9acin usando He:res= Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

-'servaremos el nuevo procedimiento creado

3,

Posteriormente

creamos

el

procedimiento

alcenado

sp^modi:icaIncidencias

que

permitirA modi:icar los datos de la ta'la de Incidencias,

6uego

de

e+ecutar

la

sentencia0

=acemos

una

actuali9acin

usando

He:res=

quedando la pesta@a Services>

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

4,

&o olvidar de agregar el procedimeinto almacenado sp^o'tenerCod%stadio Ever la segunda pagina de ;sta sesinF,

3, %n la clase 1ain agregamos los siguientes m;todos>

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

%ste m;todo nos a*udarA a llenar de datos en el o'+eto ".a'le del dise@o de :ormulario :rmIncidencias%ncuentro,

%ste m;todo permitirA 'uscar las incidencias ocasionadas por los dos equipos de un encuentro dado el n2mero de programacin, 6, %n el :ormulario :rmPrincipal que contiene el dise@o del men20 u'icamos la opcin Incidencias dentro de Procesos,

4,

Seleccionando incidencias del %ncuentro * dando clic con el 'otn derec=o del mouse elegimos Even# @Ac#i!n@Ac#i!nPer(!rmed,

6uego0 escri'imos el siguiente cdigo>

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

#, !ise@amos el siguiente :ormulario denominado :rmIncidencias%ncuentro,

5,

Kamos a proceder a programar en el :ormulario :rmIncidencias%ncuentro colocando las siguientes l7neas de cdigo>

Importamos los paquetes +ava,sql Epara acceder a 'ase de datosF0 +ava(,s/ing Epara el uso de los controles visualesF0 +ava(,s/ing,ta'le para el mane+o de las clases del paquete ta'le * el paquete campeonato^ue:a que contiene a la clase 1ain con lo cual podremos =acer uso de todos los m;todos que tenga,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Preparamos las varia'les para el acceso de datos> conn0 st0 rs, 6a varia'le gra'a es para sa'er si se va a gra'ar las incidencias EtrueF o se va a modi:icar las incidencias E:alseF, Con la varia'le dt% es para el mane+o del o'+eto "ta'le,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

%n el m;todo constructor :rmIncidencias%ncuentroEF preparamos las columnas del o'+eto ".a'le * llenamos de datos usando el m;todo VistaProgra%acion+,. .am'i;n damos al :ormulario su tama@o * u'icacin dentro de la pantalla

%l m;todo limpiar.e(tosEF es de+ar en 'lanco los cuadros de te(tos,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Programar

en el

evento

1ouseClicGed

ea

para

que

el

usuario

seleccione

una

programacin de partido se muestre las incidencias ocurridas en el encuentro, !ado el n2mero de la programacin * usando el m;todo uscaProgIncidenciasEF0 se puede lograr encontrar las incidencias del partido, Si se encuentra las incidencias se de'e tener dos registros almacenados en la varia'le rs re:erido a las incidencias del equipo local * del equipo visitante, Con el m;todo ne/t+, de HesultSet se accede a cada uno de los registros * con el m;todo getStringEF sacamos los datos de cada :ila de datos * lo asignamos a cada uno de los cuadros de te(tos, Si no =u'iera incidencias del partido programado entonces los cuadros de te(tos estar7an =a'ilitados para el ingreso de los datos de las incidencias,

Programar en el evento Jocus6ost permitirA asignarle los goles a :avor que tiene el equipo local como goles en contra al equipo visitante asignarle los goles en contra del equipo local como goles a :avor del equipo visitante,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

K a m o s

e(plicando lo mAs resaltante de la programacin del 'otn de comando Actuali9ar, Si la varia'le p2'lica gra'a viene con el valor .rue se procede a invocar un mensa+e de

con:ormacin,

Si

la

respuesta

es

a:irmativa

capturamos en la varia'le de memoria

nro*ro el n2mero de la programacin, A continuacin viene el inicio de una transaccin0 que a trav;s del m;todo set&utoCo%%it+, al ponerle el valor de :alse dentro del par;ntesis estamos indicando a la cone(in que no se procederA a terminar la transaccin =asta que se use el m;todo co%%it+,,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Kiene el uso de la varia'le cst%t instanciado de la clase Calla'leState%ent que permitirA e+ecutar un procedimiento almacenado, %l procedemiento almacenado a usar se llama sp^o'tenerCod%quipo que posee un parAmetro de entrada * otro de salida, %l valor del primer parAmetro lo indicamos con el m;todo setString+, * como el segundo parAmetro es de salida se =ace uso del m;todo register-utParameterEF indicando el tipo de dato que es entero, Con el m;todo e(ecuteEF se e+ecuta el procedimeinto almacenado * para o'tener el valor del parAmetro de salida usamos el m;todo getInt+, de'ido que el parAmetro es de tipo entero, Posteriormente se asignan a las varia'les los datos que se usarAn para la gra'acin de datos0 para lo cual se usarA el procedimiento almacenado s*2actuali3aIncidencias. 6o mismo =acemos con las incidencias del equipo visitante0 se asignan a las varia'les de memoria respectivas * nuevamente se procede a usar el procedimiento almacenado s*2actuali3aIncidencias, 6uego procedemos a =acer uso del m;todo co%%it+, a trav;s del o'+eto conn que permitirA terminar la transaccin, %n el caso de que la varia'le gra'a sea Jalse0 entonces se procederA =acer casi lo mismo sino que esta v;9 se usarA el procedimiento almacenado sp^modi:icaIncidencias para modi:icar los datos,

%l 'otn de comando =#nCerrar0 con el m;todo dispose se cierra la ventana o :ormulario, )0, Procedemos a e+ecutar el :ormulario desde el men2,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

CONSULTA DE DATOS USANDO EL OBJETO JTABLE


O=Ae#! de c!n#r!" JTa="e E m8#!d! de" in#er(ace Re $"Se#
%l o'+eto "ta'le constituirA en el componente de visuali9acin de los datos o'tenidos a partir de una consulta reali9ada ala 'ase de datos, %n sesiones anteriores =emos contemplado el mane+o del .a'le1odel EmodeloF como tam'i;n sus principales m;todos, Leneralmente cuando se reali9a una consulta a una 'ase de datos se traen BtodosC los registros0 lo cual :unciona con con+untos de tama@o ra9ona'le0 pero con mas de 3000 registros *a puede traer pro'lemas de per:ormance0 o de memoria, 6o me+or en estos caso es paginar0 * lo 'ueno es que "! C proporciona ciertas :acilidades0 como la :uncin para saltar a un registro determinado Ba'soluteEFC, Aqu7 =a* un e+emplo completo0 se le entrega el n2mero de pAgina0 * la cantidad de :ilas0 * retorna un arreglo con los registros, %sta implementacin me+ora considera'lemente el desempe@o Eper:ormanceF de la consulta Equer*F0 de'ido que el con+unto resultado Eresult setF que se recorre0 * mane+a es muc=o menor, %l e+emplo tam'i;n sirve para ver como se de'e =acer una consulta a la 'ase de datos en "ava0 con "! C0 *a que implementa otras recomendaciones comunes0 como el uso de Bprepared statementC0 que tam'i;n optimi9a la e+ecucin de las consultas0 precompilando el quer* en la ase de !atos0 * manteniendolo en Bcac=eC para :uturas e+ecuciones,

Keamos a continuacin como se podr7a =acer una consulta a los datos de la ta'la de %stadio * almacenarlos en un arreglo,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Con respecto al uso de los m;todos de un HesultSet0 lo mAs utili9ados son> I pu'lic a'stract 'oolean neI#BC t=ro/s SM6%(ception $n o'+eto de tipo HesultSet puede contener mAs de un resultado, Para ir avan9ando por la lista de resultados utili9amos este m;todo0 que devuelve un valor verdadero indicando si e(iste otro resultado o :also cuando *a no e(iste registro o :ila alguna, I pu'lic a'stract String %e#S#rin%Eint columnInde(F t=ro/s SM6%(ception I pu'lic a'stract String %e#S#rin%EString column&ameF t=ro/s SM6%(ception I pu'lic a'stract int %e#In#Eint columnInde(F t=ro/s SM6%(ception I pu'lic a'stract int %e#In#EString column&ameF t=ro/s SM6%(ception Para recuperar los datos contamos con muc=as opciones, .odos los m;todos :uncionan de la misma manera, .oman como parAmetro el 7ndice o el nom're del campo que se desea o'tener * devuelven el dato en cuestin, I pu'lic a'stract void c"! eBC t=ro/s SM6%(ception 6i'era los recursos asociados al HesultSet,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

C!n $"#a de Da#! $ and! Pre0aredS#a#emen#


%n esta oportunidad vamos a utili9ar el inter:ace PreparedStatement para preparar la consulta0 cu*a e+ecucin devolverA los resultados a un o'+eto HesultSet, Seguimos usando la 'ase de datos campeonatoue:a0 constru*endo en esta oprtunidad una consulta que muestre los +ugadores que pertenecen a un equipo seleccionado, Para dise@ar * desarroller la aplicacin seguiremos los siguientes pasos> ), %n la clase 1ain agregamos el siguiente m;todo denominado #usca!ug)qui*o>

%l m;todo

usca"ug%quipo se inicia invocando al m;todo staEF que a su ve9 utili9a el

m;todo %nlaceEF0 este 2ltimo esta'lece la cone(in con la 'ase de datos0 por lo tanto el o'+eto conn de+a de ser null * contiene la in:ormacin necesaria de la cone(in con la 'ase de datos campeonatoue:a, Se declara la varia'le cad de tipo String0 que contiene una consulta que por cierto es una su'consulta *a que contiene mAs de una sola ve9 el uso del comando select, %sta consulta lo que 'usca es o'tener los datos de los +ugadores que pertenecen a un equipo, 6uego se declara * se constru*e una varia'le o'+eto *s del tipo PreparedStatement que a partir del o'+eto conn de tipo Connection se indica la sentencia select a e+ecutar, Como la sentencia select tiene un signo ` que indica que :alta darle un valor0 entonces se procede a usar el m;todo setString+, donde el parAmetro nomequi contiene el valor o dato a reempla9ar en `, Se e+ecuta la consulta usando el m;todo e(ecuteMuer*EF0 cu*o resultado se almacena en el o'+eto HesultSet llamado rs, .am'i;n en la clase 1ain de'e estar el m;todo )nl)qui+,>

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

%ste m;todo nos permitirA o'tener los datos de los %quipos =a'ilitados para el campeonato, 2, %n el :ormulario :rmPrincipal que contiene el dise@o del men20 u'icamos la opcin

"ugadores por %quipo dentro de consultas,

Seleccionando "ugadores por %quipo * dando clic con el 'otn derec=o del mouse elegimos Even# @Ac#i!n@Ac#i!nPer(!rmed

6uego escri'imos el siguiente cdigo>

3, !ise@amos el siguiente :ormulario denominado :rmCons"ug%qui,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

4, Kamos a proceder a programar en el :ormulario :rmCons"ug%qui colocando las siguientes l7neas de cdigo>

Importamos los paquetes +ava,sql Epara acceder a 'ase de datosF0 +ava(,s/ing Epara el uso de los controles visualesF0 +ava(,s/ing,ta'le para el mane+o de las clases del paquete ta'le * el paquete campeonato^ue:a que contiene a la clase 1ain con lo cual podremos =acer uso de todos los m;todos que tenga,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Se de:ine las varia'les o'+eto conn0 st0 rs del tipo Connection0 Statement * HesultSet iniciali9ando como null, 6a varia'le o'+eto dtm es del tipo !e:ault.a'le1odel para el mane+o del o'+eto "ta'le ta'laConsulta,

%sta'lecemos con los m;todos

e#SiNeBC *

e#L!ca#i!nBC el tama@o * la locali9acin e#C!"$mnIden#i(ier BC damos el

del o'+eto :ormulario, Con la varia'le arreglo llamado titulos de tipo String0 almacenamos los t7tulos de cada uno de las columnas, Con el m;todo m;todo arreglo titulos para esta'lecer los titulos de cada columna que mane+a el modelo dt%, Con el e#m!de"BC vinculamos el modelo al o'+eto "ta'le ta'laConsulta, %n el 'loque tr* iniciamos con esta'lecer la cone(in con la 'ase de datos campeonatoue:a, $na ve9 que se tienen la cone(in procedemos a e+ecutar el m;todo En"E3$iBC que se encuentra en la clase 1ain que permitirA o'tener todos los equipos, Con el m;todo neI#BC se u'ica al primer registro de los resultados devueltos por el m;todo En"E3$iBC0 de a=7 cada ve9 que usemos el m;todo neI#BC se despla9arA al siguiente registro, Cuando el m;todo ne(tEF devuelva :also terminarA la e+ecucin de la setencia repetitiva /=ile, %n cada despla9amiento se agregarA al o'+eto "com'o o( denominado c=!E3$i0! el nom're del equipo,

Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

Se declara la varia'le no%equi de tipo String0 ( e i de tipo int, %n la varia'le no%equi se almacena el nom're del equipo seleccionado del o'+eto "Com'o o( denominado c=!E3$i0! , %l m;todo %e#Se"ec#edI#emBC o'tiene el nom're del equipo elegido pero lo e(trae de tipo 'b(e%t * al anteponerle la e(presin #)tring$ se comporta como dato de tipo )tring * lo asigna a la varia'le no%equi, %n el 'loque tr* esta'lecemos la cone(in con la 'ase de datos campeonatoue:a * e+ecutamos el m;todo usca"ug%quipoEF perteneciente a la clase 1ain que devolverA los datos de los +ugadores pertenecientes al equipo seleccionado, Se declara e instancia un arreglo denominado datosVW que permitira guardar los datos de un +ugador encontrador en la varia'le rs0 pero antes nos aseguramos que no e(ista :ila alguna en el o'+eto ".a'le ta'laConsulta, 6a sentencia repetitiva /=ile * usando el m;todo neI#BC del o'+eto rs es para u'icarnos en la primera :ila * en las siguientes :ilas de los resultados devueltos por el m;todo 9$ caJ$%E3$i0!BC, %n cada interacin se agregarA una :ila en el o'+eto ta'laConsulta a trav;s del modelo dt% usando el m;todo addR!GBC, Ing. Mirko Manrique Ronceros

Univer idad Naci!na" de" San#a Fac$"#ad de In%enier&a E.A.P. Si #ema e In(!rm)#ica

Tecn!"!%&a C"ien#e'Servid!r c!n Java

%l 'otn de comando =#nCerrar0 con el m;todo dispose se cierra la ventana o :ormulario,

3, Procedemos a e+ecutar el :ormulario desde el men2,

Ing. Mirko Manrique Ronceros

También podría gustarte