Está en la página 1de 4

TECNOLOGIA JAVA DATABASE CONECTIVITY (JDBC) JDBC proporciona a las aplicaciones Java un mecanismo uniforme para el acceso a los

datos. La tecnologa JDBC consiste en la utilizacin de un conjunto de clases (API JDBC) que disponen de una serie de mtodos para operar con la BD. Utilizando estos mtodos, la aplicacin dirige todas las peticiones hacia un software intermediario, conocido como driver JDBC, cuya misin es traducir las llamadas a los mtodos a rdenes nativas del gestor de BD. La principal ventaja que ofrece esta sistema es que la aplicacin se independiza del tipo de base de datos utilizado para almacenar la informacin. En otras palabras, no hay que escribir otro programa para acceder a Oracle, otro para Sybase, etc., dado que el API JDBC utiliza una serie de clases e interfaces genricas que actan sobre el driver, no sobre la BD. Tan solo es necesario disponer de un driver especfico para el tipo de base de datos con el que se va trabajar. Un driver JDBC, es una clase Java que implementa toda la funcionalidad del API JDBC, proporcionando la comunicacin entre la aplicacin y la BD. Normalmente son los fabricantes de BD los que distribuyen los driver JDBC aunque tambin se pueden encontrar en productos de terceros, como entornos de desarrollo (IDE) o servidores de aplicaciones.

EL API JDBC Las clases e interfaces que forman parte de este API se encuentran en el paquete java.sql. Algunas clases e interfaces son: clase Interfaz Interfaz interfaz DriverManager Connection Statement ResultSelect Establece conexiones con la bd a travs del driver Representa una conexin con la bd Ejecucin de consulta sql Manipulacin de registros en consultas de tipo Select

Utilizacin de JDBC para acceder a datos En toda aplicacin que utilice JDBC para acceder a una BD, se distinguen cuatro fases o pasos a realizar. 1. 2. 3. 4. Conexin con la BD Ejecucin de consultas. Manipulacin de registros Cierre de la conexin.

Conexin con la BD

M. en Informtica Georgina Salazar Partida

Esta accin requiere la realizacin de dos operaciones: 1. Carga del driver. Mediante esta accin, se prepara el driver JDBC para que pueda ser utilizado. Esto se realiza mediante el mtodo esttico forName() de la clasa java.lang.Class Es mtodo localiza, lee y analiza dinmicamente el driver, devolviendo un objeto Class asociado a la clase indicada. Puede provocar la excepcin ClassNotFoundException. 2. Creacin de la conexin. Una vez cargado el driver se debe proceder a la conexin con la base de datos, operacin que se lleva a cabo con el mtodo estatico getConnection() de la clase DriverManager del API de JDBC. Connection getConnection(String url) url representa la direccin de la BD y su formato es: jdbc:subprotocolo:base_datos subprotocolo depende del tipo de driver utilizado y base_datos es el nombre de la base de datos. getConnection() puede provocar una excepcin SQLException. Ejecucin de consultas 1. Creacin del objeto Statement Las consultas SQL se manejan a travs de un objeto que implemente la interfaz Statement, cuya creacin se realiza mediante el mtodo createStatement() de la interfaz Connection: Statement st; st= cn.createStatement(); Esta operacin puede provocar un SQLException. 2. Ejecucin de la consulta SQL La interfaz Statement proporciona diversos mtodos para enviar una consulta SQL a travs de la conexin. Los mas importantes son: Boolean execute(String sql). Enva a la BD la consulta SQL proporcionada como parmetro. Si se trata de una consulta de accin (Insert, Update o Delete) el mtodo devolver false indicando que no se generan resultados. Cuando es una consulta de seleccin (Select), el mtodo devolver true. int executeUpdate(String sql). Enva una consulta de accin a la BD, devolviendo el nmero de registros afectados por la accin.

M. en Informtica Georgina Salazar Partida

ResultSet executeQuery(String sql). Enva una consulta de seleccin de registros a la BD, devolviendo un objeto ResultSet para su implementacin. En caso de cualquier problema los tres mtodos generan SQLException. Cierre de la conexin Se realiza mediante el mtodo close() de la interfaz Connection. La llamada a este mtodo tambin pueda provocar SQLException. Cuando se cierra una conexin todos los objetos Statement que queden abiertos sern cerrados automticamente. Manipulacin de Registros El envi de una consulta de seleccin de registros a la BD devuelve como resultado un objeto que, adems de disponer de un cursor para desplazarse por el conjunto de registros seleccionados, permite acceder a los valores de los campos. Este objeto implementa la interfaz ResultSet. La interfaz ResultSet del API SQL, proporciona mtodos para desplazarse por el conjunto de registros afectados por la consulta y manipular contenidos. 1. Obtener objeto ResultTest Un objeto ResultTest se crea al invocar al mtodo executeQuery() del objeto Statement. ResultSet rs = st.executeQuery(select * from empleados); De forma predeterminada este objeto posee la caracterstica de ser de solo avance y solo lectura. Esto implica que el recorrido se deber hacer siempre desde el primer registro hacia adelante y los contenidos de los campos no podr ser modificado. 2. Desplazamiento por el conjunto de registros Una vez obtenido el ResultSet, el cursor se encuentra situado en la posicin que esta antes del primer registro. Para realizar el desplazamiento por los registros, la interfaz ResultSet proporciona el mtodo next(). La llamada a este mtodo desplaza el cursor al siguiente registro del conjunto, devolviendo como resultado un boolean que indica si la nueva posicin apuntada se corresponde con un registro (true) o si el cursor se ha salido del conjunto (false). Utilizando este mtodo y una instruccin while, es posible recorrer todos los registros desde el primero hasta el ltimo.

M. en Informtica Georgina Salazar Partida

while (rs.next()){ }

3. Acceso a los campos La interfaz ResultSet proporciona dos grupos de mtodos para acceder a los campos del registro actual, el que est siendo apuntado por el cursor (registro actual). Estos mtodos son: Xxx getXxxx(int posicin) xxx.getXxx(String nombre_campo) Donde xxx puede ser el nombre de cualquiera de los tipos bsicos Java mas Date, String y Object, debindose utilizar aquel mtodo que se corresponda con el tipo almacenado en el campo. El primer grupo de mtodos permite obtener el valor de un campo a partir de su posicin dentro del registro, siendo 1 la posicin del primer campo Por su parte, el segundo grupo de mtodos obtiene el valor del campo a partir del nombre del mismo. ResultSet rs = st.executeQuery(select * from empleados); while (rs.next()){ System.out.println(rs.getInt(edad)); }

4. Otros mtodos de la interfaz ResultSet boolean isFirst(). Devuelve true si el cursor apunta al primer registro. boolean isBeforeFirst(). Devuelve true si el cursor est situado antes del primer registro. boolean isLast(). Devuelve true si el cursor est apuntando al ltimo registro. boolean isAfterLast(). Devuelve true si el cursor se encuentra despus del ltimo registro. int getRow() Devuelve la posicin del registro actual, siendo 1 la posicin del primer registro. Todos los mtodos de la interfaz ResultSet pueden lanzar una SQLException. 5. Cierre de un ResultSet El mtodo close() de la interfaz ResultSet permite cerrar el objeto y liberar los recursos utilizados por este.

M. en Informtica Georgina Salazar Partida