Este Documento Ha sido descargado desde la Web ms completa en todo tipo de ebooks y Tutoriales.
Si deseas ms informacin o libros, entonces ingresa a: http://www.enigmaelectronica.tk http://www.foroenigma.tk Y podrs descargar muchas aplicaciones tiles.
Libros Manuales Tutoriales Cursos Programas Msica Pelculas Grupo Enigma Electrnica Enigma Team
INDICE
Introduccin Programacin Cliente Servidor Herramientas para la Programacin Cliente Servidor Arquitectura Cliente Servidor Conectividad a la Base de Datos con JDBC Uso del Entorno Netbeans para conexin a Base de Datos Acceso de la base de datos y el paquete java.sql Objeto de control JTable en mantenimiento de datos Swing, Mens y mantenimiento de datos usando varias tablas Mantenimiento de datos usando procedimientos almacenados Transacciones y Bsquedas con base de datos consulta de datos usando el objeto JTable 02 03 04 06 08 16 26 38 50 66 77 90
Pgina 2 de 100
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
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.
Pgina 3 de 100
Pgina 4 de 100
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
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.
Pgina 5 de 100
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.
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.
Pgina 6 de 100
Universidad Nacional del Santa Facultad de Ingeniera E.A.P. Sistemas e Informtica 2 capas (Cliente Servidor tradicional)
El modelo de 3 capas esta basado en objetos: Clientes: Que son aplicaciones propias Lgica de Negocio y de Datos: Objetos distribuidos
Lgica de Negocio y de Datos: Generacin dinmica de contenidos en lenguaje HTML, XML, xHTML.
Pgina 7 de 100
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
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.
Pgina 9 de 100
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.
Pgina 10 de 100
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 con las limitaciones y problemas que esto implica. 100% Java pero an as necesita la existencia de un cdigo binario (la librera DBMS) en la mquina del cliente,
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
Pgina 11 de 100
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");
Pgina 12 de 100
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 4 variables o 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]$ 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 java TestConnection java.lang.ClassNotFoundException:
(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)
Pgina 15 de 100
1. 2.
Agregarle a NetBeans el conector como una biblioteca o librera. Esto permite que el conector este disponible para los proyectos. 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.
Pgina 16 de 100
b.
NetBeans. En la ventana, al lado izquierdo observa libreras agregadas NetBeans. lado a Del se las
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 ...
b. Se
cierra y
el
cuadro a
de la
dilogo
volvemos
ventana anterior donde se observar la nueva librera MySQL. botn de Posteriormente comando Add procedemos a dar clic en el JAR/Folder ...
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.
Pgina 18 de 100
Pgina 19 de 100
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.
Pgina 22 de 100
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.
Pgina 23 de 100
Pgina 24 de 100
Pgina 25 de 100
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.
carpetas Views
Pgina 26 de 100
4. Vamos a proceder a crear la tabla de Equipo con los campos codequipo int, nombre OK. 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
5.
Pgina 27 de 100
6.
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.
Pgina 28 de 100
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.
Pgina 29 de 100
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 a 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.
Pgina 30 de 100
Universidad Nacional del Santa Facultad de Ingeniera E.A.P. Sistemas e Informtica La interfaz Statement, los objetos de
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 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 con no
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
Pgina 31 de 100
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, public existen otros mtodos gracias a los cuales es posible recorrer los
resultados guardados en el objeto de tipo ResultSet. 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) para Creamos un Jframe abrir un
objeto
nuevo formulario.
Pgina 32 de 100
2) Indicamos como nombre de clase formulario: frmverEquipos. Luegos damos click en el botn de comando Finish.
3)
Damos clic botn derecho sobre el diseo del formulario para cambiar el libremente.
Set
Pgina 33 de 100
4)
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.
Pgina 34 de 100
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 a 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
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.
Pgina 36 de 100
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:
Pgina 37 de 100
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.
Pgina 38 de 100
Pgina 39 de 100
3.
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.
Pgina 40 de 100
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 grabemos los datos de un nuevo estadio se habilitar. Vamos a disear el siguiente formulario al cual lo llamaremos frmMantEstadio dando los nombres correspondientes a cada uno de los objetos de control dibujados. cada vez que
Pgina 41 de 100
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.
Pgina 42 de 100
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.
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
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.
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.
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.
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.
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.
9.
Luego de grabar, al dar clic en el botn de comando Ver Lista de Estadios, el formulario se mostrar de la siguiente forma.
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.
luego
aplicamos
una
actualizacin
(Refresh)
para
Universidad Nacional del Santa Facultad de Ingeniera E.A.P. Sistemas e Informtica visualizar la nueva tabla.
6.
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 los para el objeto JcheckBox referido a Suspendido se denomina se denomina tablaProgramacion. de chkSuspendido y para el objeto JTable Finalmente botones
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.
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.
b. Definir los atributos o variables a usar en los distintos mtodos que forma la clase frmProgramacionPartidos
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.
g. Cuando se seleccione una etapa del campeonato, como por ejemplo eliminatoria se habilitar el uso del objeto jComboBox llamado cboGrupo.
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.
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.
j. Cuando se seleccione un equipo en la caja de lista lstEquipo1 se proceder a buscar si el encuentro ya fue programado o no.
continuamos ...
2.
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.
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.
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
mouse
elegimos
Events/Action/ActionPerformed.
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.
Los mtodos activaBotones() permitir gestionar el uso de los botones de comando y el mtodo limpiarDatos() es para limpiar los cuadros de textos.
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 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. mtodo
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 y 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
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.
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 almacenado a sp_grabaArbitro, colocando 4 signos de interrogacin que parmetros que expresa el manejo de 4
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 mtodo executeUpdate() contiene que el dato apellido que el se asignar al primer parmetro. Una vez indicado los valores a cada uno de los parmetros se hace uso del permitir ejecutar 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.
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.
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.
Bsquedas
de
datos
con
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 procedimientos almacenados con la interfaz CallableStatement y transacciones:
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
3.
Posteriormente
creamos
el
procedimiento
alcenado
sp_modificaIncidencias
que
Luego
de
ejecutar
la
sentencia,
hacemos
una
actualizacin
usando
Refresh
4.
No olvidar de agregar el procedimeinto almacenado sp_obtenerCodEstadio (ver la segunda pagina de sta sesin).
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.
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.
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.
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
Programar
en el
evento
MouseClicked
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.
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 invocar un mensaje de
conformacin.
Si
la
respuesta
es
afirmativa
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().
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.
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.
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(), cuyo resultado se almacena en el objeto ResultSet llamado rs. Tambin en la clase Main debe estar el mtodo EnlEqui():
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
Seleccionando Jugadores por Equipo y dando clic con el botn derecho del mouse elegimos Events/Action/ActionPerformed
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.
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.
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
Este Documento Ha sido descargado desde la Web ms completa en todo tipo de ebooks y Tutoriales.
Si deseas ms informacin o libros, entonces ingresa a: http://www.enigmaelectronica.tk http://www.foroenigma.tk Y podrs descargar muchas aplicaciones tiles.
Libros Manuales Tutoriales Cursos Programas Msica Pelculas Grupo Enigma Electrnica Enigma Team