Está en la página 1de 34

Lenguaje de Programacin I

PRIMERA UNIDAD DIDCTICA


J2EE, TECNOLOGA JDBC APLICADO A LA INTERFASE SWING
I INTRODUCCION Y ORIENTACION PARA EL ESTUDIO
Amigo participante:
Acabas de emprender el estudio que te permitir conocer y aplicar la tecnologa JDBC con la finalidad de
construir aplicaciones Java con conexin a base de datos, con posibilidad de realizar mantenimiento y
manejo de los datos.
Se le invita a tomar los valiosos conocimientos de esta separata siguiendo detalladamente la metodologa
planteada: Lea analticamente el contenido de esta unidad, aplique los ejercicios propuestos, y finalmente
realice las actividades propuestas, si tuviera dudas sobre algn aspecto, no dude en consultar con su
profesor de la asignatura.
Cada tema cuenta con el objetivo que se desea lograr, su respectivo resumen, desarrollo y las actividades
domiciliarias que debe desarrollarse para fortalecer el conocimiento, su glosario de trminos que pudiera
desconocer y algunos anexos para ampliar su conocimiento.
II DESARROLLO DE LOS CONTENIDOS
TEMA1: INTRODUCCION A LA TECNOLOGIA JDBC
LOGROS

El participante lograr comprender el funcionamiento y la importancia de la tecnologa JDBC y de


sus diversos componentes, as como tambin sus interacciones de esta tecnologa con los diferentes
orgenes de datos.
El participante aprenda a manejar las distintas interfaces y clases contenidas en el JDBC de Java con el
propsito de establecer una conexin, ejecutar comandos SQL y manejar un esquema de datos.
RESUMEN
La tecnologa JDBC es un conjunto de clases e interfaces, escritos en cdigo 100% Java que permiten la
conexin y el manejo de los datos de una base de datos. La tecnologa JDBC utiliza un Driver provisto por
el fabricante que permite la conexin entre la aplicacin y la base de datos.
JDBC contiene una variedad amplia de clases e interfaces para el manejo de datos, entre las que resalta
por su importancia las siguientes: Connection (permite abrir, controlar y cerrar la conexin con una base
de datos), Statement (permite ejecutar los comandos SQL para insertar, modificar, borrar y crear
esquemas de datos), ResultSet (Maneja un esquema de datos), DriverManager (Maneja los drivers de
conexin).

PROFESOR: Ricardo Coello Palomino

1 Semana Pg. 1

Lenguaje de Programacin I

DESARROLLO

INTRODUCCIN
Java Database Connectivity (JDBC) es una interface de acceso a bases de datos estndar SQL que
proporciona un acceso uniforme a una gran variedad de bases de datos relacionales. JDBC tambin
proporciona una base comn para la construccin de herramientas y utilidades de alto nivel.
El paquete actual de JDK incluye JDBC y el puente JDBC-ODBC. Estos paquetes son para su uso
con JDK 1.x.
DEFINICION DEL JDBC
JDBC es el API para la ejecucin de sentencias SQL. (Como punto de inters JDBC es una marca
registrada y no un acrnimo, no obstante a menudo es conocido como Java Database Connectivity).
Consiste en un conjunto de clases e interfaces escritas en el lenguaje de programacin Java. JDBC
suministra un API estndar para los desarrolladores y hace posible escribir aplicaciones de base de datos
usando un API puro Java.
Usando JDBC es fcil enviar sentencias SQL virtualmente a cualquier sistema de base de datos. En otras
palabras, con el API JDBC, no es necesario escribir un programa que acceda a una base de datos Sybase,
otro para acceder a Oracle y otro para acceder a Informix. Un nico programa escrito usando el API JDBC
y el programa ser capaz de enviar sentencias SQL a la base de datos apropiada. Y, con una aplicacin
escrita en el lenguaje de programacin Java, tampoco es necesario escribir diferentes aplicaciones para
ejecutar en diferentes plataformas. La combinacin de Java y JDBC permite al programador escribir una
sola vez y ejecutarlo en cualquier entorno.
Java, siendo robusto, seguro, fcil de usar, fcil de entender, y descargable automticamente desde la red,
es un lenguaje base excelente para aplicaciones de base de datos.
FUNCIONES DEL JDBC
1. Establecer una conexin con una base de datos
2. Enviar una consulta SQL a la base de datos
3. Procesar los resultados de la consulta.
El API JDBC del desarrollador de aplicaciones consta de dos partes, por un lado est el paquete java.sql,
que contiene las clases e interfaces que permiten acceder a la funcionalidad bsica del API JDBC. Este
paquete forma parte de la edicin estndar de la plataforma Java (J2SE), desde la versin 1.1 de sta.
Esta separata se centra en la funcionalidad de este paquete.
CARACTERSTICAS Y DRIVERS DEL JDBC
Los Driver, tambin llamados Manejadores, son un conjunto de clases que implementan las clases e
interfaces del API JDBC necesarias para que una aplicacin Java pueda conectarse con una BD. Cuando
los desarrolladores de una BD desean que esta pueda ser accesible mediante JDBC stos deben
implementar un manejador para esa base de datos; la misin del manejador ser traducir comandos
estndar del API JDBC al protocolo nativo de esa base de datos.

PROFESOR: Ricardo Coello Palomino

1 Semana Pg. 2

Lenguaje de Programacin I

Cada base de datos emplea un protocolo diferente de comunicacin, protocolos que normalmente son
propietarios. El uso de un manejador, una capa intermedia entre el cdigo del desarrollador y la base de
datos, permite independizar el cdigo Java que accede a la BD del sistema de BD concreto a la que
estamos accediendo, ya que en nuestro cdigo Java emplearemos comandos estndar, y estos comandos
sern traducidos por el manejador a comandos propietarios de cada sistema de BD concreto.
Si queremos cambiar el sistema de BD que empleamos lo nico que deberemos hacer es reemplazar el
antiguo manejador por el nuevo, y seremos capaces de conectarnos la nueva BD.
Para garantizar que un manejador respeta el API JDBC existe un conjunto de pruebas que debe pasar el
manejador para poderse considerar JDBC CompliantTM, estas pruebas (disponibles en
http://java.sun.com/products/jdbc/download.html) nos garantizan que un manejador ha sido desarrollado
siguiendo el API JDBC.
En http://servlet.java.sun.com/products/jdbc/drivers se puede encontrar manejadores para cualquier base
de datos.
Tipos de manejadores:
Hay 4 tipos de manejadores JDBC, que difieren en s, usan o no tecnologa Java Pura, en su rendimiento y
en la flexibilidad para cambiar de base de datos. Veamos cuales son:
a. Puente JDBC-ODBC (tipo1)
ODBC es un API estndar semejante a JDBC, que permite que lenguajes como C++ accedan de un modo
estndar a distintos sistemas de BD. Un manejador tipo puente JDBC-ODBC delega todo el trabajo sobre
un manejador ODBC, que es quien realmente se comunica con la BD. El puente JDBC-ODBC permite la
conexin desde Java a BD que no proveen manejadores JDBC. Fue muy til cuando se cre el API JDBC,
ya que muchas BD no disponan de manejadores JDBC, pero s de manejadores ODBC. Empleado el
puente JDBC-ODBC poda accederse a estas bases de datos empleando el API JDBC.
Este tipo de manejador tiene dos desventajas: por un lado depende de cdigo nativo, ya que el manejador
ODBC no ha sido desarrollado en Java. Esto compromete la portabilidad de nuestro desarrollo. Por otro
lado al emplear este tipo de manejador nuestra aplicacin llama al gestor de manejadores JDBC, quien a
su vez llama al manejador JDBC (puente JDBC-ODBC), quien llama al manejador ODBC, que es el que
finalmente llama a la base de datos. Hay muchos puntos donde potencialmente puede producirse un fallo,
lo cual hace que estos manejadores muchas veces sean bastante inestables.

PROFESOR: Ricardo Coello Palomino

1 Semana Pg. 3

Lenguaje de Programacin I

El puente forma parte del jdk de SUN, est en el paquete sun.jdbc.odbc. Inicialmente este tipo de
manejador fue bastante til por aliviar la carencia de manejadores JDBC.
Hoy en da es el menos recomendado por limitar la portabilidad de la aplicacin, al requerir cdigo nativo, y
por emplear tantas capas para la comunicacin con la base de datos, lo que a veces hace que incrementa
la inestabilidad de estos manejadores.
b. Manejador de API nativo (tipo2)
Se basa en una librera escrita en cdigo nativo para acceder a la base de datos. El manejador traduce las
llamadas JDBC a llamadas al cdigo de la librera nativa, siendo el cdigo nativo el que se comunica con
las bases de datos. La librera nativa es proporcionada por los desarrolladores de la BD.
Estos manejadores son ms eficientes y tienen menos puntos de fallo que el puente JDBC-ODBC ya que
hay menos capas entre el cdigo de la aplicacin y la base de datos. Sin embargo siguen teniendo el
problema de prdida de portabilidad por emplear cdigo nativo.

c. Manejador de JDBC-Net (tipo3)


El manejador se comunica con un servidor intermedio que se encuentra entre el cliente y la base de datos.
El servidor intermediario se encarga de traducir las al API JDBC al protocolo especfico de la base de
datos.
No se requiere ningn tipo de cdigo nativo en el cliente, por lo que la portabilidad de la aplicacin est
garantizada: el manejador es tecnologa 100% Java.. Adems si el intermediario es capaz de traducir las
llamadas JDBC a protocolos especficos de diferentes sistemas de BD podremos emplear un mismo
manejador para comunicarnos con diferentes bases de datos. Esto lo convierte en el manejador ms
flexible de todos. No obstante se trata de un driver complejo, ya que requiere la presencia de un midelware,
una capa intermedia entre el cliente y la ase de datos, por lo que no es muy comn emplearlo en
arquitecturas simples, sino ms bien en arquitecturas sofisticadas donde muchas veces entran en juego
varias bases de datos distintas. API JDBC

PROFESOR: Ricardo Coello Palomino

1 Semana Pg. 4

Lenguaje de Programacin I

d. Manejador de Protocolo Nativo (tipo4)


El manejador traduce directamente las llamadas al API JDBC al protocolo nativo de la base de
datos. Es el manejador que tiene mejor rendimiento, pero est ms ligado a la base de datos
que empleemos que el manejador tipo JDBC-Net, donde el uso del servidor intermedio nos da
una gran flexibilidad a la hora de cambiar de base de datos. Este tipo de manejadores tambin
emplea tecnologa 100% Java.

PROFESOR: Ricardo Coello Palomino

1 Semana Pg. 5

Lenguaje de Programacin I

LAS INTERFACES Y CLASES DEL JDBC


JDBC incluye un conjunto de interfaces y clases de que permiten el manejo de base de datos en Java, esta
tecnologa est basada fundamentalmente en las siguientes interfaces:
a. Driver
b. DriverManager
c.

Connection

d. Statement
e. PreparedStatement
f.

CallableStatement

g. ResultSet
REGISTRO DE UN MANEJADOR
Registrar un manejador no es ms que cargar en memoria una clase que implementa el interfaz Driver,
clase proporcionada por los desarrolladores de la base de datos. Existen tres formas de registrar un Driver:

PROFESOR: Ricardo Coello Palomino

1 Semana Pg. 6

Lenguaje de Programacin I
1. Empleando el cargador de clases. Para ello empleamos, al igual que para cargar cualquier otra clase, el
mtodo forName(String clase) de la clase Class.
Class.forName("com.mysql.Driver");
2. Instanciando la clase que implementa el interfaz Driver. De este modo tendremos una referencia al Driver,
pudiendo establecer la conexin directamente con l sin necesidad de emplear la clase DriverManager.
La sintaxis es la misma que para instanciar cualquier otra clase:
Driver driverPraMySQL = new org.gjt.mm.mysql.Driver();
3. Definir la propiedad jdbc.drivers. Podemos hacerlo de dos modos diferentes:
a.

Definiendo la propiedad jdbc.drivers en nuestra


jdbc.drivers=nombreManejador1: nombreManejador2:

mquina

virtual.

La

sintaxis

es

jdbc.drivers=gjt.mm.mysql.Driver:oracle.jdbc.driver.OracleDriver;
b. Emplear la opcin D al invocar a la mquina virtual. Para ellos debemos arrancar nuestra aplicacin
con el comando java: Djdbc.drivers= nombreManejador1: nombreManejador2:
java -Djdbc.drivers=gjt.mm.mysql.Driver:oracle.jdbc.driver.OracleDriver;

INTERFAZ DRIVER
Aunque es vital para establecer la conexin con la base de datos en la prctica el desarrollador de
aplicaciones puede olvidarse de esta interfaz. Es responsabilidad del desarrollador del manejador proveer
una clase que la implemente esta interfaz, y ser responsabilidad del DriverManager llamar al mtodo
connect de los drivers registrados para intentar establecer la conexin con la base de datos.
No obstante es posible crear un objeto tipo Driver, instanciando la clase desarrollada por el desarrollador
del manejador, e invocar directamente a su mtodo connect, obteniendo una conexin con la base de datos
sin necesidad de emplear la clase DriverManager. De este modo tenemos ms control sobre el Driver que
estamos empleando en la conexin, cuando hemos registrado ms de un driver, ya que no nos
arriesgamos a que se establezca conexin con la BD con un driver distinto al que nosotros deseamos usar.
CLASE DRIVERMANAGER
Como su nombre indica, esta clase es la gestora de los diversos drivers (manejadores) que existan en
nuestra aplicacin. Es posible que sea necesario que en una misma aplicacin se tenga varios
manejadores para acceder a varias bases de datos.
Los mtodos que ms nos interesan de esta clase son:

PROFESOR: Ricardo Coello Palomino

1 Semana Pg. 7

Lenguaje de Programacin I
static Connection getConnection(String url);
static Connection getConnection(String url, String user, String password).
Estos mtodos intentan establecer conexin con la base de datos que le indiquemos en el campo url,
empleando para ellos todos los manejadores que hemos registrado. La diferencia entre un mtodo y el otro,
obviamente, es que en uno slo se especifica la base de datos a la que nos queremos conectar, mientras
que en el otro se indica tambin el nombre de usuario de la base de datos y su password. Ms adelante
explicaremos que es el objeto Connection que devuelven estos mtodos.
Lo que hace la clase DriverManager para intentar establecer conexin con la base de datos es invocar al
mtodo connect de la interface Driver, interface que como veremos deben implementar todos los
manejadores. Realiza esta operacin con todos los manejadores que tiene registrados, si el manejador
devuelve null significa que no se ha podido conectar con la base de datos, y el gestor intenta de nuevo
conectarse con otro manejador. Si consigue conectarse con un manejador no sigue intentndolo con el
resto de los manejadores registrados, y si no consigue establecer la conexin con ningn manejador lanza
una excepcin tipo SQLException.

PROFESOR: Ricardo Coello Palomino

1 Semana Pg. 8

Lenguaje de Programacin I

Sintaxis de los URL de JDBC


Los URL (Uniform Resource Locator) de JDBC identifican una base de datos, y un protocolo de conexin a
esta, de un modo unvoco. Toda URL de JDBC consta siempre de tres partes:
protocolo:subprotocolo:subnombre.

Ejemplo:
"jdbc:odbc:usuarios"
Veamos cada una de las partes del URL:
1. Protocolo de la conexin. Siempre es jdbc.
2. Subprotocolo de la conexin. Identifica el tipo de mecanismo de conexin que emplearemos para
acceder a la base de datos. Es imprescindible especificarlo para que el DriverManager pueda saber qu
tipo de manejador debe emplear para crear la conexin. En el URL ejemplo el subprotocolo empleado
para la conexin a la base de datos ser ODBC, por lo que el DriverManager intentar establecer la
conexin con todos los manejadores registrados que sean de tipo 1, puente JDBC-ODBC.
3. Subnombre, identifica la base de datos con la que queremos establecer una conexin. El subnombre es
usuarios; ser el sistema ODBC quien proporcione, a partir de ese nombre, el resto de la informacin
necesaria para establecer la conexin con la base de datos.

Sin embargo si empleamos otro protocolo puede ser necesario incluir la direccin de red del servidor
como subnombre. Por ejemplo:
protocolo:subprotocolo://servidor:puerto/subnombre
"jdbc:microsoft:sqlserver://localhost:1433;pubsSQL;selectMethod=cursor

As por ejemplo la URL: jdbc:bdnet://javahispano.org:4040/usuarios empleara el protocolo jdbc y un


manejador de tipo JDBC-Net para conectarse a la hipottica base de datos usuarios a travs del puerto
4040 de la mquina javahispano.org.
Mtodos de la Clase DriverManager
Todos los mtodos que encontramos en esta clase son estticos (No requieren instancia para poder
utilizarlo) y se comentan brevemente a continuacin:
Mtodo
Connection getConnection(String url)

Connection getConnection(String url, Properties

PROFESOR: Ricardo Coello Palomino

Descripcin
Establece una conexin con la base de
datos identificada por la URL de JDBC que
se pasa por parmetros.
Establece una conexin con la base de

1 Semana Pg. 9

Lenguaje de Programacin I
info)
Connection getConnection(String
usuario, String contrasea)

url,

void println(String mensaje)


void setLoginTimeout(int segundos)

String

datos identificada por la URL de JDBC que


se pasa por parmetros.
Establece una conexin con la base de
datos pero en su segundo parmetro
especifica propiedades que posee el driver,
como puede ser la base de datos, el
usuario, la contrasea, etc. Estas
propiedades se organizan en pares
propiedad/valor.
Escribe un mensaje en el flujo de actividad
actual
Establece el tiempo de espera que el driver
utilizar para realizar una conexin.

INTERFAZ CONNECTION
Representa una conexin con la base de datos. Permite crear objetos que representan consultas que se
ejecutarn en la base de datos, y permite acceder a informacin sobre la base de datos y las posibilidades
del manejador JDBC.
En esta tabla recogemos los principales mtodos de la interfaz Connection. Sobre muchos de ellos
volveremos a hablar ms adelante.

Mtodos de la Interfaz Connection


Mtodo
Descripcin
void close()
Cierra una conexin, liberando todos los
recursos asociados a la misma.
boolean isClosed()
Devuelve verdadero si la conexin est cerrada
boolean isReadOnly()
Devuelve true si la conexin es de slo lectura
PreparedStatement
Crea un objeto PreparedStatement que va a
prepareStatement(String sql)
permitir enviar y ejecutar sentencias SQL
parametrizadas a la base de datos
correspondiente.
PreparedStatement
Igual que el mtodo anterior, pero permite
especificar las caractersticas del ResultSet que
prepareStatement(String
sql,
int
se obtendr a la hora de ejecutar el objeto
tipoResultSet, int tipoConcurrencia)
PreparedStatement correspondiente.
void setReadOnly(boolean soloLectura)
Establece si una conexin posee el modo de
solo lectura o no, dependiendo del argumento
de tipo booleano.
Hace permanentes los cambios que se
void commit()
realizaron desde el ltimo commit o
rollback.

PROFESOR: Ricardo Coello Palomino


10

1 Semana Pg.

Lenguaje de Programacin I
Statement createStatement()

Crea un objeto de tipo Statement.

bolean getAutoCommit()
DatabaseMetaData getMetaData()

Indica si est en modo auto-commit.


Devuelve
un
objeto
tipo
DatabaseMetaData con meta informacin
acerca de la base de datos contra la cual
se ha abierto esta conexin..
Crea un objeto CallableStatement para
ejecutar procedimientos almacenados
SQL en la BD.
Crea un objeto PreparedStatement para
ejecutar consultas SQL parametrizadas en
la BD.
Deshace todos los cambios realizados
desde la ltima vez que se ejecut
commit o rollback
Cierra una conexin, liberando todos los
recursos asociados a la misma.
Crea tambin una sentencia SQL pero generar
en su ejecucin un objeto ResultSet con unas
caractersticas determinadas.
Devuelve verdadero si la conexin est cerrada
Devuelve true si la conexin es de slo lectura
Crea un objeto PreparedStatement que va a
permitir enviar y ejecutar sentencias SQL
parametrizadas a la base de datos
correspondiente.
Igual que el mtodo anterior, pero permite
especificar las caractersticas del ResultSet que
se obtendr a la hora de ejecutar el objeto
PreparedStatement correspondiente.
Establece si una conexin posee el modo de
solo lectura o no, dependiendo del argumento
de tipo booleano.

CallableStatement prepareCall(String sql)

PreparedStatement prepareStatement(String
sql)
void rollback()

void close()
Statement
createStatement(int
tipoResultSet, int tipoConcurrencia)
boolean isClosed()
boolean isReadOnly()
PreparedStatement
prepareStatement(String sql)

PreparedStatement
prepareStatement(String
sql,
tipoResultSet, int tipoConcurrencia)

int

void setReadOnly(boolean soloLectura)

ENVIO DE SENTENCIAS SQL


JDBC suministra tres clases para el envo de sentencias SQL. Estas clases son los siguientes:

Statement Creada por el mtodo createStatement. Un objeto Statement se usa para enviar
sentencias SQL simples.

1.-

2.- PreparedStatement Creada por el mtodo prepareStatement- Un objeto PreparedStatement


se usa para sentencias SQL que toman uno o ms parmetros como argumentos de entrada
(parmetros IN). PreparedStatement tiene un grupo de mtodos que fijan los valores de los
parmetros IN, los cuales son enviados a la base de datos cuando se procesa la sentencia SQL.
Instancias de PreparedStatement extienden Statement y por tanto heredan los mtodos de
Statement. Un objeto PreparedStatement es potencialmente ms eficiente que un objeto Statement
porque este ha sido precompilado y almacenado para su uso futuro.

PROFESOR: Ricardo Coello Palomino

1 Semana Pg. 11

Lenguaje de Programacin I
3.- CallableStatement Creado por el mtodo prepareCall. Los objetos CallableStatement se usan para
ejecutar procedimientos almacenados SQL un grupo de sentencias SQL que son llamados mediante un
nombre, algo parecido a una funcin - . Un objeto CallableStatement hereda mtodos para el manejo de los
parmetros IN de PreparedStatement, y aade mtodos para el manejo de los parmetros OUT e INOUT.
INTERFACE STATEMENT
Esta interfaz permite enviar instrucciones SQL a la base de datos. Podemos obtener un objeto que
implemente esta interfaz a partir del mtodo Statement createStatement() de la interfaz Connection. Para
enviar una consulta tipo SELECT se emplea el mtodo executeQuery(String sql). Este mtodo devuelve
un objeto tipo ResultSet. Para enviar una instruccin tipo DELETE, UPDATE, INSERT o una instruccin
DDL (Data Definition Language) se emplea executeUpdate(String sql). Mediante el mtodo
execute(String sql) podemos ejecutar cualquiera de los comandos anteriores.

Un objeto Statement se usa para enviar sentencias SQL a la base de datos. Actualmente hay tres
tipos de objetos Statement, todos los cuales actan como contenedores para la ejecucin de
sentencias en una conexin dada: Statement, PreparedStatement que hereda de Statement y
CallableStatement que hereda de PreparedStatement. Estas estn especializadas para enviar tipos
particulares de sentencias SQL, Un objeto Statement se usa para ejecutar una sentencia SQL simple
sin parmetros. Un objeto PreparedStatement se usa para ejecutar sentencias SQL precompiladas
con o sin parmetros IN; y un objeto CallableStatement se usa para ejecutar un procedimiento
almacenados de base de datos.

La interfase Statement suministra mtodos bsicos para ejecutar sentencias y devolver resultados.
La interfase PreparedStatement aade mtodos para trabajar con los parmetros IN; y la interfase
CallableStatement aade mtodos para trabajar con parameters OUT.

Creacin de objetos Statement

PROFESOR: Ricardo Coello Palomino


12

1 Semana Pg.

Lenguaje de Programacin I
Una vez establecida la conexin con una base de datos particular, esta conexin puede usarse para
enviar sentencias SQL. Un objeto Statement se crea mediante el mtodo de Connection
createStatement, como podemos ver en el siguiente fragmento de cdigo.

Connection con = DriverManager.getConnection(url, "sunny", "");


Statement stmt = con.createStatement();

La sentencia SQL que ser enviada a la base de datos es alimentada como un argumento a uno de
los mtodos de ejecucin del objeto Statement. Por ejemplo:

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2");


Ejecucin de sentencias usando objetos Statement.

La interfase Statement nos suministra tres mtodos diferentes para ejecutar sentencias SQL,
executeQuery, executeUpdate y execute. El mtodo a usar est determinado por el producto de la
sentencia SQL

El mtodo executeQuery est diseado para sentencias que producen como resultado un nico
resultSet tal como las sentencias SELECT.

El mtodo executeUpdate se usa para ejecutar sentencias INSERT, UPDATE DELETE as


como sentencias SQL DDL (Data Definition Language) como CREATE TABLE o DROP TABLE.
El efecto de una sentencia INSERT, UPDATE o DELETE es una modificacin de una o ms
columnas en cero o ms filas de una tabla. El valor devuelto de executeUpdate es un entero que
indica el nmero de filas que han sido afectadas (referido como update count). Para sentencias tales
como CREATE TABLE o DROP TABLE, que no operan sobre filas, le valor devuelto por
executeUpdate es siempre cero.

El mtodo execute se usa para ejecutar sentencias que devuelven ms de un ResultSet, ms que un
update count o una combinacin de ambos.
PROFESOR: Ricardo Coello Palomino
13

1 Semana Pg.

Lenguaje de Programacin I

Todos los mtodos que ejecutan sentencias cierran los objetos ResultSet abiertos como resultado de
las llamadas a Statement. Esto quiere decir que es necesario completar el proceso con el actual
objeto ResultSet antes de reejecutar una sentencia Statement.

Debe notarse que la interfase PreparedStatement, que hereda los mtodos de la interfase Statement,
tiene sus propias versiones de los mtodos executeQuery, executeUpdate y execute. Los objetos
Statement en s mismos no contienen una sentencia SQL, por tanto debe suministrarse como un
argumento a los mtodos Statement.execute. Los objetos PreparedStatement no suministran una
sentencia SQL como argumento a estos mtodos puesto que ya tienen la sentencia precompilada.
Los objetos CallableStatement heredan las formas de estos mtodos de PreparedStatement. Usar un
parametro de query con las versiones de los mtodos de PreparedStatement o CallableStatement
producir una SQLException,

Realizacin de Statement
Cuando una conexin est en modo auto-commit, las sentencias ejecutadas son comitadas o
rechazadas cuando se completan. Un sentencia se considera completa cuando ha sido ejecutada y
se han devuelto todos los resultados. Para el mtodo executeQuery, que devuelve un nico
ResultSet, la sentencia se completa cuando todas las filas del objeto ResultSet se han devuelto.
Para el mtodo executeUpdate, un sentencia se completa cuando se ejecuta. En los raros casos en
que se llama al mtodo execute, de cualquier modo, no se completa hasta que los ResultSets o
update counts que se generan han sido devueltos.

Algunos DBMS tratan cada sentencia en un procedimiento almacenado como sentencias separadas.
Otros tratan el procedimiento entero como una sentencia compuesta. Esta diferencia se convierte
en importante cuando est activo el modo auto-commit porque afecta cuando se llama al mtodo
commit. En el primer caso, cada sentencia individual es commitada. En el segundo, se commiten
todas juntas.

Cerrar objetos Statement

Los objetos Statement se cerrarn automticamente por el colector de basura de Java (garbage
collector). No obstante se recomienda como una buena prctica de programacin que se cierren
PROFESOR: Ricardo Coello Palomino
14

1 Semana Pg.

Lenguaje de Programacin I
explcitamente cuando no sean ya necesarios. Esto libera recursos DBMS inmediatamente y ayuda
a evitar potenciales problemas de memoria.

INTERFAZ RESULTSET
Esta interfaz representa un conjunto de datos que son el resultado de una consulta SQL. La
clase posee una serie de mtodos XXX getXXX(int columna) y XXX getXXX(String columna)
que permiten acceder a los resultados de la consulta (para la sintaxis correcta de estos
mtodos acudir al javadoc de la interfaz ResultSet). Para acceder a los distintos registros
empleamos un puntero, que inicialmente apunta justo antes de la primera fila.
Para desplazar el puntero empleamos el mtodo next().

Un ResultSet contiene todas las filas que satisfacen las condiciones de una sentencia SQL y
proporciona el acceso a los datos de estas filas mediante un conjunto de mtodos get que permiten
el acceso a las diferentes columnas de la filas. El mtodo ResultSet.next se usa para moverse a la
siguiente fila del ResultSet, convirtiendo a sta en la fila actual.

El formato general de un ResultSet es una tabla con cabeceras de columna y los valores
correspondientes devueltos por la query. Por ejemplo, si la query es SELECT a, b, c FROM
Table1, el resultado tendr una forma semejante a:

b
-------12345
83472
83492

c
--------Cupertino
Redmond
Boston

-------CA
WA
MA

ACTIVIDADES

PROFESOR: Ricardo Coello Palomino


15

1 Semana Pg.

Lenguaje de Programacin I
Investigue los siguientes temas:
a. Definicin, caractersticas y funciones de ODBC.
b. En que carpeta del JDK se encuentran los drivers JDBC
c. Cmo conseguir los drivers JDBC del gestor de base de datos MS SQLSERVER y
MySQL?
d. Cul de los 4 tipos de JDBC corresponde a la conexin que necesita MS-ACCESS?
e. Enumere y detalle la funcin de cada uno de los mtodos de las interfaces Statement y
ResultSet.
GLOSARIO

API : Librera de recursos externo a una aplicacin, desde la cual se puede invocar a
clases, mtodos, propiedades, etc.

DRIVER: Software provisto por el fabricante de una base de datos que permita la conexin
entre una la aplicacin Java y una base de datos.

ODBC: API de Microsoft Windows que permite la conexin de base de datos Microsoft con
distintos orgenes de datos.

STATEMENT: Interfaz de Java que se encarga de ejecutar los comandos SQL (Ejm:
Select, Update, Delete, Insert, etc)

RESULTSET: Esquema de datos creado por la ejecucin de un comando select, alojado en


la memoria del equipo del cliente.

Conexin a Base de Datos


Java conexin MySql con NetBeans
1. Crear una base de datos con sus respectivas tablas

PROFESOR: Ricardo Coello Palomino


16

1 Semana Pg.

Lenguaje de Programacin I

2. Crear un proyecto conexin_bd en NetBeans


3. Crear la interfaz grfica

4. Dar un clic derecho en la carpeta Libraries luego dar clic en Add


Libraries
5. en la siguiente ventana seleccione la librera MySQL JDBC Driver, luego
dar un clic en el botn Add Library

PROFESOR: Ricardo Coello Palomino


17

1 Semana Pg.

Lenguaje de Programacin I

6. En el Source de la ventana importar las siguientes libreras.

7. Digitar lo siguiente en el botn mostrar

PROFESOR: Ricardo Coello Palomino


18

1 Semana Pg.

Lenguaje de Programacin I

8. Ejecute el Formulario

ResultSetMetaData
1. Disear el siguiente formulario.

2. En el Source de la ventana importar las siguientes libreras.

PROFESOR: Ricardo Coello Palomino


19

1 Semana Pg.

Lenguaje de Programacin I

3. Escriba el siguiente cdigo en el botn, en el cual estamos utilizando un


Meta Dato (ResultSetMetaData) quien nos va a permitir obtener la cantidad
de columnas y labels del ResultSet.

PROFESOR: Ricardo Coello Palomino


20

1 Semana Pg.

Lenguaje de Programacin I

Ejemplo de BD y Tablas
1. Crear 5 BD (Comercial, Clnica, Biblioteca, Colegio, Cine), luego crear 5
tablas en cada BD.
2. Disear la siguiente ventana:

3. En el Source de la ventana importar las siguientes libreras.

4. Crear el procedimiento cargarBD.


PROFESOR: Ricardo Coello Palomino
21

1 Semana Pg.

Lenguaje de Programacin I

5. Crear el procedimiento cargarTablas.

PROFESOR: Ricardo Coello Palomino


22

1 Semana Pg.

Lenguaje de Programacin I

6. Llamar al procedimiento.

7. Clic derecho cboBD / Events / Mouse / MouseClicked

Tarea Domiciliaria
Mostrar las BDs en un Jtable
Mostrar las tablas en un Jtable segn la BD seleccionada.
Mostrar los registros en un Jtable segn la tabla seleccionada.

Crear Usuarios en SQL- Server


1. Ingresar al SGBD Sql Server como Autentificacin de Windows

2. Clic derecho en el servidor / Propiedades


3. Propiedades del Servidor / Seguridad, realizar cambios en la ventana.

PROFESOR: Ricardo Coello Palomino


23

1 Semana Pg.

Lenguaje de Programacin I

4. Clic derecho en Seguridad / Nuevo / Inicio de sesin

5. realice los siguientes cambios en la ventana:

Nombre de inicio de sesin


Autentificacin de SQL Server
Contrasea
Confirmar contrasea

PROFESOR: Ricardo Coello Palomino


24

1 Semana Pg.

Lenguaje de Programacin I

6. En la ventana Roles activar las siguientes casillas.

7. En la ventana Estado activar las siguientes casillas.

PROFESOR: Ricardo Coello Palomino


25

1 Semana Pg.

Lenguaje de Programacin I

8. Dar un clic en el icono Desconectar


9. Dar un clic en el icono Conectar

10. En la siguiente ventana realice los siguientes cambios:


Autentificacin
Inicio de sesin
Contrasea

11. Ahora observara el nuevo usuario.

PROFESOR: Ricardo Coello Palomino


26

1 Semana Pg.

Lenguaje de Programacin I

Prctica
Crear un nuevo Inicio de sesin con su nombre.

Java conexin Sql Server 2012 con NetBeans


Crear una base de datos con sus respectivas tablas
create database prueba
use prueba
create table personal
(
cod_personal varchar (10),
nom_personal varchar (50),
ape_personal varchar (50),
dir_personal varchar (50)
)
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert

into
into
into
into
into
into
into
into
into
into

personal
personal
personal
personal
personal
personal
personal
personal
personal
personal

values
values
values
values
values
values
values
values
values
values

('PER01','RICARDO','COELLO PALOMINO','ATE')
('PER02','LUIS','ROJAS VIVAN','CHOSICA')
('PER03','ANDRES','CALAMAR RIOS','ATE')
('PER04','LUCIO','RUIZ BISBAL','CHACLACAYO')
('PER05','ERNESTO','MORALES BERMUDEZ','CHOSICA')
('PER06','VANY','RODRIGUEZ BARJA','ATE')
('PER07','SUSANA','AYALA HUACACHI','CHACLACAYO')
('PER08','MARIA','RIOS CHAMBILLO','CHOSICA')
('PER09','CARMEN','TORRES PALOMINO','ATE')
('PER010','LUCIA','DE LA CRUZ SANDOVAL','CHACLACAYO')

1. Crear un proyecto conexin_bd en NetBeans


2. Crear la interfaz grfica

PROFESOR: Ricardo Coello Palomino


27

1 Semana Pg.

Lenguaje de Programacin I

3. Dar un clic derecho en la carpeta Libraries luego dar clic en Add


JAR/Folder
4. Buscar la librera sqljdbc4, Clic en el botn abrir

5. Dar clic en el Source y escriba lo siguiente:

PROFESOR: Ricardo Coello Palomino


28

1 Semana Pg.

Lenguaje de Programacin I

6. Dar doble clic al botn Mostrar, escriba el siguiente cdigo:

PROFESOR: Ricardo Coello Palomino


29

1 Semana Pg.

Lenguaje de Programacin I

My SQLYog
CREATE DATABASE comercial
CREATE TABLE vendedor
(
cod_vendedor CHAR(10)NOT NULL,
nom_vendedor VARCHAR(50)NOT NULL,
ape_vendedor VARCHAR(50)NOT NULL,
dir_vendedor VARCHAR(50)NOT NULL
)
SELECT * FROM vendedor
INSERT INTO vendedor VALUES
palomino','ate')
INSERT INTO vendedor VALUES
barja','ate')
INSERT INTO vendedor VALUES
rodriguez','chaclacayo')
INSERT INTO vendedor VALUES
coello','santa anita')

('vend01','ricardo','coello
('vend02','vany','rodriguez
('vend03','susana','coello
('vend04','geraldine','sanchez

CREATE TABLE profesor


(
cod_profesor CHAR(10)NOT NULL,
nom_profesor VARCHAR(50)NOT NULL,
ape_profesor VARCHAR(50)NOT NULL,
dir_profesor VARCHAR(50)NOT NULL
)
PROFESOR: Ricardo Coello Palomino
30

1 Semana Pg.

Lenguaje de Programacin I

SELECT * FROM profesor


INSERT INTO profesor VALUES
palomino','ate')
INSERT INTO profesor VALUES
INSERT INTO profesor VALUES
rodriguez','chaclacayo')
INSERT INTO profesor VALUES
coello','santa anita')

('prof01','ricardo','coello
('prof02','vany','rodriguez barja','ate')
('prof03','susana','coello
('prof04','geraldine','sanchez

CREATE TABLE cliente


(
cod_cliente CHAR(10)NOT NULL,
nom_cliente VARCHAR(50)NOT NULL,
ape_cliente VARCHAR(50)NOT NULL,
dir_cliente VARCHAR(50)NOT NULL
)
SELECT * FROM cliente
INSERT INTO cliente VALUES
INSERT INTO cliente VALUES
INSERT INTO cliente VALUES
rodriguez','chaclacayo')
INSERT INTO cliente VALUES
coello','santa anita')

('cli01','ricardo','coello palomino','ate')
('cli02','vany','rodriguez barja','ate')
('cli03','susana','coello
('cli04','geraldine','sanchez

create database prueba


go prueba
create table personal
(
cod_personal char(10),
nom_personal varchar(50),
ape_personal varchar(50),
dir_personal varchar(50)
PROFESOR: Ricardo Coello Palomino
31

1 Semana Pg.

Lenguaje de Programacin I

Bibliografa
AVA - Traer datos desde una BD a un control JComboBox, JTable y
JTable Pt.1
https://www.youtube.com/watch?v=4rXdm_AZYDU
Uso del MetaData
http://www.youtube.com/watch?v=9dYyn8hUT8w
tutorial SQL
http://www.devjoker.com/gru/Tutorial-SQL-/CSQL/Tutorial-SQL-.aspx
Cargar combobox con bd
https://www.youtube.com/watch?v=uUzQewzCRiU
Cargar listado de tablas
https://www.youtube.com/watch?v=hQ4LQlAl6pw

http://programadoressise.blogspot.com/2013/11/conectar-unaaplicacion-de-netbeans.html

manual sqlyog
PROFESOR: Ricardo Coello Palomino
32

1 Semana Pg.

Lenguaje de Programacin I

http://www.enespanol.com.ar/2006/05/23/guia-rapida-de-mysql/

Trabajos Grupales
1. Definicin, Caractersticas y Funciones de JDBC
2. Tipos de manejadores (Drivers)
3. Las Interfaces Y Clases Del JDBC
a. Drivers (MySQL, SQL-Server, Oracle, DB2, Access)
b. DriverManager
DriverManager es una clase esttica de Java 2 Plaform, Standard Edition (J2SE) y Java SE Development Kit (JDK).
DriverManager gestiona el conjunto de controladores Java Database Connectivity (JDBC) que estn disponibles para
que los utilice una aplicacin.
Las aplicaciones pueden utilizar varios controladores JDBC simultneamente si es necesario. Cada aplicacin especifica
un controlador JDBC mediante la utilizacin de un URL (Localizador universal de recursos). Pasando un URL de un
controlador JDBC especfico a DriverManager, la aplicacin informa a DriverManager acerca del tipo de conexin JDBC
que debe devolverse a la aplicacin.
Para poder realizar esta operacin, DriverManager debe estar al corriente del los controladores JDBC disponibles para
que pueda distribuir las conexiones. Efectuando una llamada al mtodo Class.forName, carga una clase en la mquina
virtual Java (JVM) que se est ejecutando en funcin del nombre de serie que se pasa en el mtodo. A continuacin
figura un ejemplo del mtodo class.forName utilizado para cargar el controlador JDBC nativo:
Ejemplo: cargar el controlador JDBC nativo
// Cargar el controlador JDBC nativo en DriverManager para hacerlo
// disponible para peticiones getConnection.
Class.forName("com.ibm.db2.jdbc.app.DB2Driver");
Los controladores JDBC estn diseados para informar a DriverManager acerca de s mismos automticamente cuando
se carga su clase de implementacin de controlador. Una vez que se ha procesado la lnea de cdigo mencionada
anteriormente, el controlador JDBC nativo est disponible para la DriverManager con la que debe trabajar. La lnea de
cdigo siguiente solicita un objeto Connection que utiliza el URL de JDBC nativo:
Ejemplo: solicitar un objeto Connection
// Obtener una conexin que utiliza el controlador JDBC nativo.
Connection c = DriverManager.getConnection("jdbc:db2:*local");
La forma ms sencilla de URL JDBC es una lista de tres valores separados mediante dos puntos. El primer valor de la
lista representa el protocolo, que es siempre jdbc para los URL JDBC. El segundo valor es el subprotocolo y se utiliza
db2 o db2iSeries para especificar el controlador JDBC nativo. El tercer valor es el nombre de sistema para establecer la
conexin con un sistema especfico. Existen dos valores especiales que pueden utilizarse para conectarse con la base
de datos local. Son *LOCAL y localhost (ambos son sensibles a maysculas y minsculas). Tambin puede suministrarse
un nombre de sistema especfico, de la forma siguiente:
Connection c =
DriverManager.getConnection("jdbc:db2:rchasmop");

PROFESOR: Ricardo Coello Palomino


33

1 Semana Pg.

Lenguaje de Programacin I
http://www01.ibm.com/support/knowledgecenter/ssw_ibm_i_61/rzaha/db2drivr.ht
m?lang=es
http://www.webtaller.com/construccion/lenguajes/java/lecciones/conex
iones-db-java-3.php
c. Connection

d. Statement
CreateStatement
PreparedStatement
CallableStatement
http://www.euskalnet.net/jaoprogramador/j2ee/JDBC/jdbc17.htm
http://www.myjavazone.com/2012/08/statement.html
g. ResultSet

PROFESOR: Ricardo Coello Palomino


34

1 Semana Pg.

También podría gustarte

  • 2 Sesion Primera Semana de BD - Oracle
    2 Sesion Primera Semana de BD - Oracle
    Documento6 páginas
    2 Sesion Primera Semana de BD - Oracle
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • 1 Sesion Primera Semana de BD - Oracle
    1 Sesion Primera Semana de BD - Oracle
    Documento17 páginas
    1 Sesion Primera Semana de BD - Oracle
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Semana 06
    Semana 06
    Documento13 páginas
    Semana 06
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • 3 Sesion Primera Semana de BD - Oracle
    3 Sesion Primera Semana de BD - Oracle
    Documento7 páginas
    3 Sesion Primera Semana de BD - Oracle
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 10 - LP I
    Sesion 10 - LP I
    Documento3 páginas
    Sesion 10 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 07 - LP I
    Sesion 07 - LP I
    Documento2 páginas
    Sesion 07 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 20 - LP I
    Sesion 20 - LP I
    Documento8 páginas
    Sesion 20 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 12 - LP I
    Sesion 12 - LP I
    Documento16 páginas
    Sesion 12 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Clase 02
    Clase 02
    Documento13 páginas
    Clase 02
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 09 - LP I Java
    Sesion 09 - LP I Java
    Documento4 páginas
    Sesion 09 - LP I Java
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 21 - LP I
    Sesion 21 - LP I
    Documento6 páginas
    Sesion 21 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 20 - LP I
    Sesion 20 - LP I
    Documento8 páginas
    Sesion 20 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 05 - LP I
    Sesion 05 - LP I
    Documento2 páginas
    Sesion 05 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Modelamiento de Si
    Modelamiento de Si
    Documento2 páginas
    Modelamiento de Si
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 10 - LP I
    Sesion 10 - LP I
    Documento13 páginas
    Sesion 10 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 01 - LP I
    Sesion 01 - LP I
    Documento11 páginas
    Sesion 01 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 11 - LP I
    Sesion 11 - LP I
    Documento3 páginas
    Sesion 11 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 02 - LP I
    Sesion 02 - LP I
    Documento10 páginas
    Sesion 02 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 06 - LP I
    Sesion 06 - LP I
    Documento2 páginas
    Sesion 06 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 03 - LP I Java
    Sesion 03 - LP I Java
    Documento5 páginas
    Sesion 03 - LP I Java
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 08 - LP I Java
    Sesion 08 - LP I Java
    Documento6 páginas
    Sesion 08 - LP I Java
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Semana 02 Fundamentos de Programacion B
    Semana 02 Fundamentos de Programacion B
    Documento9 páginas
    Semana 02 Fundamentos de Programacion B
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 07 - LP I
    Sesion 07 - LP I
    Documento2 páginas
    Sesion 07 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 06 - LP I
    Sesion 06 - LP I
    Documento2 páginas
    Sesion 06 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 04 - LP I
    Sesion 04 - LP I
    Documento1 página
    Sesion 04 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 01 - LP I
    Sesion 01 - LP I
    Documento11 páginas
    Sesion 01 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 05 - LP I
    Sesion 05 - LP I
    Documento2 páginas
    Sesion 05 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Semana 01 Fundamentos de Programacion B
    Semana 01 Fundamentos de Programacion B
    Documento31 páginas
    Semana 01 Fundamentos de Programacion B
    Ricardo Coello Palomino
    Aún no hay calificaciones
  • Sesion 07 - LP I
    Sesion 07 - LP I
    Documento2 páginas
    Sesion 07 - LP I
    Ricardo Coello Palomino
    Aún no hay calificaciones