Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tecnologia Cliente Servidor Con Java
Tecnologia Cliente Servidor Con Java
FACULTAD DE INGENIERIA
E.A.P INGENIERIA DE SISTEMAS E INFORMATICA
INDICE
Introduccin
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
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
Comunican dos procesos que pueden estar alojados en dos mquinas diferentes.
RPCs
Sigue siendo necesaria la distincin del cdigo cliente y del cdigo servidor.
1. CORBA:
Es necesario que exista una versin de CORBA para la plataforma donde se quiere
implementar.
Ventajas:
Incovenientes:
Complejidad en el desarrollo
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.
de
Negocio:
Funcionalidad
de
la
empresa,
comn
para
todas
las
aplicaciones.
Lgica de los datos: Definicin lgica de los datos (vistas, tablas, tipos de datos,
claves, etc.)
Gestor de Datos: Encargada de escribir y acceder a la base de datos.
Modelo Fsico:
Pgina 6 de 100
Clientes: Navagadores
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
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
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
necesita la existencia de un cdigo binario (la librera DBMS) en la mquina del cliente,
con las limitaciones y problemas que esto implica.
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
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
sql.
Se
construye
la
clase
TextConnection,
estableciendo
variables
java
TestConnection
java.lang.ClassNotFoundException:
com.mysql.jdbc.Driver
(Seguramente no se ha puesto la ruta al archivo connector.jar en la variable de ambiente
CLASSPATH)
[blueman@casita]$ java TestConnection
java.sql.SQLException: Invalid authorization specification: Access denied for
user: 'bingo@localhost' (Using password: YES)
Ing. Mirko Manrique Ronceros
Pgina 14 de 100
Pgina 15 de 100
1.
Agregarle a NetBeans el conector como una biblioteca o librera. Esto permite que el
conector este disponible para los proyectos.
2.
Pgina 16 de 100
b.
Se visualiza un
cuadro
de
dilogo
que
permite
administrar
las
libreras
bibliotecas
de
NetBeans. En la
ventana, al lado
izquierdo
se
observa
las
libreras
agregadas
NetBeans.
Del
lado
derecho
b. Se
cierra
dilogo
el
cuadro
volvemos
de
la
Posteriormente
de
comando
Add
JAR/Folder ...
Pgina 17 de 100
c.
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)
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 21 de 100
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
de datos.
2.
carpetas
Views
referidas
(vistas)
Tables
y
(tablas),
Procedures
Pgina 26 de 100
4. Vamos a proceder a crear la tabla de Equipo con los campos codequipo int,
nombre
varchar(40),
representante
varchar(32),
entrenador
varchar(40),
grupo
char(1) y estado bit. Una vez indicado los campos damos clic en el botn de comando
OK.
5.
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.
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
static
synchronized
Connection
getConnection(String
url)
throws
SQLException
public static
password) throws
El primero de los mtodos recibe como parmetro la direccin URL que identifica la
base de datos. En el caso en que sea necesario proporcionar un usuario y una
contrasea para acceder a la base de datos (como sucede en MySql) se utiliza el
segundo de los mtodos. Una direccin URL JDBC proporciona un mtodo de
localizacin de bases muy parecido al que representan las direcciones URL que
identifican sitios Web de Internet. Los controladores JDBC tienen que ser capaces de
conectar
con
la
base
de
datos
partir
de
la
informacin
contenida
en
la
direccin URL JDBC de la misma, por lo que son los desarrolladores los que fijan en la
mayora de los casos la sintaxis.
La interfaz Connection, cuando se utiliza uno de los mtodos anteriormente
mencionados se obtiene un objeto de tipo Connection que representa como es de
esperar la conexin con la base de datos. El objeto obtenido cuenta con varios mtodos.
Dos de los ms importantes son:
public abstract Statement createStatement() throws SQLException
public abstract void close() throws SQLException
El primero de los mtodos sirve para crear un objeto del tipo Statement. Las frases SQL
se ejecutan normalmente mediante la utilizacin de objetos del tipo Statement.
Finalmente, es conveniente cerrar las conexiones tan pronto como dejen de utilizarse
para
liberar
recursos.
No
obstante,
ha
de
tenerse
en
cuenta
que establecer
una conexin es una operacin costosa, por lo que tampoco se debe estar abriendo
y cerrando la conexin con frecuencia.
Pgina 30 de 100
no
interfaz
ResultSet,
el
mtodo
executeQuery
que
se
utiliza
para
ejecutar
sentencias SQL devuelve un objeto de tipo ResultSet. ste contiene las filas o registros
obtenidos al ejecutar una sentencia SELECT. Para recuperar los datos contamos
Ing. Mirko Manrique Ronceros
con
Pgina 31 de 100
muchas opciones. Todos los mtodos funcionan de la misma manera. Toman como
parmetro el ndice o el nombre del campo que se desea obtener y devuelven el dato en
cuestin.
public abstract String getString(int columnIndex) throws SQLException public
abstract String getString(String columnName) throws SQLException public
abstract int getInt(int columnIndex) throws SQLException
public abstract int getInt(String columnName) throws SQLException
Adems,
existen
otros
mtodos
gracias
los
cuales
es
posible
recorrer
los
abstract
int
findColumn(String
columnName)
throws
SQLException
objeto
de
tipo
ResultSet
puede
contener
ms
de
un
resultado.
Para
ir
avanzando por la lista de resultados utilizamos este mtodo, que devuelve un valor
indicando si existe otro resultado o no.
public abstract boolean wasNull() throws SQLException
Indica si el contenido de la ltima columna accedida es NULL SQL
public abstract void close() throws SQLException
Libera los recursos asociados al ResultSet
Vamos a proceder a visualizar en objetos Jlist, los datos contenidos de la tabla de Equipo.
1)
Creamos un
objeto
para
Jframe
abrir
un
nuevo formulario.
Pgina 32 de 100
3)
Damos clic botn derecho sobre el diseo del formulario para cambiar el
Set
Pgina 33 de 100
4)
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
travs
de
su
mtodo
Pgina 35 de 100
travs de
los
registros
de
datos
para
ir llenado
los
Pgina 36 de 100
Pgina 37 de 100
Pgina 38 de 100
table
estadio(codestadio
int
not
null
primary
key
varchar(20)
not
Pgina 39 de 100
3.
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
los
nombres
correspondientes
cada
uno
de
los
objetos
de
control
dibujados.
Pgina 41 de 100
Pgina 42 de 100
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
de
estadio buscado, haciendo que los cuadros de textos se muestren los dems
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
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.
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.
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.
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.
3. Ejecutamos la instruccin,
Ing. Mirko Manrique Ronceros
luego
aplicamos
una
actualizacin
(Refresh)
para
6.
cboEstadios,
para
el
para
los
botones
se
denomina
tablaProgramacion.
de
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.
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.
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.
g. Cuando se seleccione una etapa del campeonato, como por ejemplo eliminatoria se
habilitar el uso del objeto jComboBox llamado cboGrupo.
continuamos ...
la
implementacin
de
las
tablas,
disparadores,
funciones
procedimientos
almacenados. Los procedimientos almacenados son de gran utilidad para realizar tareas
frecuentes en una base de datos, es sorprendente la cantidad de tiempo que se puede
llegar a ahorrar al hacer uso de este mecanismo.
Interface PreparedStatement
Este componente permitir hacer uso de los procedimientos almacenados. Una vez
instanciado el objeto usaremos el mtodo preparedStatement para invocar el uso de un
procedimiento almacenado. Tambin se har uso de los mtodos setString(), setInt(),
setDate(), etc para indicar la posicin del parmetro y el valor de dicho parmetro.
Finalmente
usaremos
el
mtodo
executeUpdate()
para
ejecutar
el
procedimiento
almacenado.
A continuacin, procedemos a disear el mantenimiento de datos de la tabla de Arbitro
usando procedimientos almacenados:
1. Creamos la tabla de Arbitro dentro de la base de datos campeonatouefa:
2.
3.
4.
6. Seleccionado
Arbitro
dando
clic
botn
derecho
del
Events/Action/ActionPerformed.
mouse
elegimos
9.
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.
mtodo
de la interfaz ResulSet.
El mtodo next devuelve verdadero si encuentra la primera fila de informacin, las
siguientes veces se desplaza en cada registro almacenado en el rs. La sentencia if que
se encuentra dentro del while, su condicin lgica se har verdadero cuando encuentre
el cdigo del rbitro buscado, haciendo que los cuadros de textos se muestren los
dems datos, es entonces que la variable encuentra recin se hace verdadero.
con la base
de
datos
en
la
variable
rs
se
almacena
los
datos
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
la
variable
pstmt
establecemos
como
procedimiento
almacenado
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
contiene
el
dato
apellido
que
se
asignar
al
primer
parmetro. Una vez indicado los valores a cada uno de los parmetros se hace uso del
mtodo
executeUpdate()
que
permitir
ejecutar
el
procedimiento
almacenado.
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.
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.
salvado
anteriormente,
con.rollback().
Estos
dos
mtodos
pueden
lanzar
SQLExceptions si algo va mal cuando la base de datos realice realmente la operacin, por
eso necesitamos envolverlos en bloques try ... catch. Por defecto, una conexin funciona en
modo autocommit, es decir, cada vez que se ejecuta una sentencia SQL se abre y se cierra
automticamente una transaccin, que slo afecta a dicha sentencia. Es posible modificar
esta opcin mediante setAutoCommit(), mientras que getAutoCommit() indica si se est en
modo autocommit o no. Si no se est trabajando en modo autocommit ser necesario que
se cierren explcitamente las trasancciones mediante commit() si tienen xito, o roolback().
En un entorno mono-usuario, las transaciones son bastantes sencillas de entender -simplemente implican salvar o deshacer el estado de una aplicacin. Sin embargo, en modo
multi-usuario, las transaciones son ms complejas. La demostracin clsica de una
transacin multi-usuario es una cuenta bancaria donde una aplicacin est intentando hacer
un cargo mientras otra aplicacin est intentando hacer un depsito en la misma cuenta. En
el caso del campeonatouefa al momento de ingresar los datos de las incidencias de un
encuentro o partido tendremos que grabar dos registros uno de cada equipo, esto quiere
decir que no se debe permitir grabar las incedencias de un equipo y las incendencias del
otro equipo no.
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:
usando
CallableStatement
procedimientos
almacenados con
la
interfaz
y transacciones:
2.
3.
Posteriormente
creamos
el
procedimiento
alcenado
sp_modificaIncidencias
que
Luego
de
ejecutar
la
sentencia,
hacemos
una
actualizacin
usando
Refresh
4.
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.
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.
JTable
y llenamos
de
datos
usando
el mtodo
VistaProgramacion().
Programar
en el
evento
MouseClicked
ea
para
que
el
usuario
seleccione
una
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
conformacin.
Si
la
respuesta
es
afirmativa
invocar un
mensaje
de
de
datos,
para
lo
cual
se
usar
el
procedimiento
almacenado
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
Este mtodo nos permitir obtener los datos de los Equipos habilitados para el
campeonato.
2.
Seleccionando Jugadores por Equipo y dando clic con el botn derecho del mouse
elegimos Events/Action/ActionPerformed
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
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.
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
5.
Procedemos a ejecutar el formulario desde el men.