Anda di halaman 1dari 26

Introduccin a Bases de datos desde JAVA

Juan Guillermo Montoya

CORPORACIN UNIVERSITARIA ADVENTISTA TECNOLOGA DE SISTEMAS Programacin 3

JDBC (Java DataBase Connectivity)

JDBC, es el componente JAVA que permite a las aplicaciones JDBC interactuar con motores de base de datos relacionales. Se divide en dos paquetes

java.sql, dentro de J2SE javax.sql extensin dentro de J2EE

Para acceder a una base de datos es necesario de un driver. El API JDBC facilita programar el acceso a BD sin que se tenga en cuenta a que Servidor nos dirigimos (Oracle, Sybase, Informix, etc.).

Modelo JDBC

Drivers JDBC

Existen Drivers JDBC para la mayora de motores de bases de datos. Existen 4 tipos de Drivers: Nativos, 100% Java, JDBC-ODBC, JDBC Network Driver.

Driver Java
Protocolo especfico del Proveedor DriverJDBC (Java Puro) Base de Datos Cdigo JAVA

Es un driver Java Puro, que habla directamente con la base de datos. Es el mtodo ms eficiente de acceso a bases de datos. No requiere de ninguna librera adicional ni de la instalacin de un middleware, con lo cual es de deployment ms simple. La mayora de los fabricantes, proveen drivers JDBC de tipo 4 para sus bases de datos.

Driver JDBC ODBC

La API JDBC
El Api ofrece las clases e interfaces para: Establecer una conexin a una base de datos. Ejecutar una consulta. Procesar los resultados.

Operaciones bsicas
1. 2. 3. 4. 5. 6.

Establecer conexin. Crear sentencia. Ejecutar sentencia. Procesar resultados. Finalizar sentencia. Cerrar conexin.

Clases a usar

DriverManager: Carga, elige drivers Driver: Se conecta con la base de datos actual Connection: Una serie de sentencias SQL hacia y desde la BD Statement: Un sentencia SQL ResultSet: Los registros obtenidos de la sentencia SQL

Conexin a la Base de Datos

Ejemplo de una conexin a una Base de Datos (A Oracle)


Puerto BD ... Connection miConexion; try { Class.forName(oracle.jdbc.driver.OracleDriver); miConexion = DriverManager.getConnection(jdbc:oracle:thin:@localhost:1521:XE, HR,HR); ... } catch (ClassNotFoundException e1) { User Pass // captura el error: no se encontr el driver } catch (SQLException e2) { // captura el error: no se pudo conectar a la BD }
Se deben manejar por lo menos dos excepciones. Una es para controlar si el Driver no es encontrado y la otra para verificar si se realiz la conexin. Esta conexin ser usada para realizar todas las operaciones sobre la Base de Datos. Nombre del Driver

url de la BD

Ejemplo conexin a una BD en Acces

Driver

Conectarse a una bd de access llamada EJEMPLOBDJAVA

Importante
Se debe agregar el Driver de la Base de datos al proyecto web. Para Oracle, el Driver es: ojdbc14.jar (ojdbc6.jar), Se encuentra en la ruta: C:\oraclexe\app\oracle\product\10.2.0\server \jdbc\lib El driver se agrega en la carpeta lib (libraries) del proyecto

Practiquemos !

Manipulando informacin desde aplicaciones web

Ejecucin de sentencias SQL

STATEMENT
Clase bsica que sirve para enviar comando SQL A LA Bases de datos Statement st = conexion.createStatement(); Mtodos Principales. Execute (String sql): ejecuta una instruccin sql de parmetro. Puede retornar mltiples resultados. ExecuteUpDate (String sql): ejecuta una instruccin sql de parametro usualmente se usa para INSERT, UPDATE, or DELETE

Ejemplo

Leer los datos de la BD


Luego de ejecutar la sentencia SQL, los datos se guardan en un objeto de tipo ResultSet, el cual se recorre, para leer los campos fila a fila.

PreparedStatement

Una sentencia preparada (PreparedStatement) es un tipo de sentencia que mejora la performance de las consultas. A diferencia de las sentencias tradicionales cuando se crean requieren de la sentencia SQL como argumento del constructor. Esta sentencia es enviada al motor de BD para su compilacin y cuando se ejecuta el motor de BD la corre sin previa compilacin. Las sentencias preparadas manejan parmetros, con lo cual pueden ejecutarse muchas veces con distintos parmetros.
Ejemplo: PreparedStatement p_sent = miConexion.prepareStatement(SELECT * FROM Empleados WHERE edad = ?) p_sent.setInt(1, 55); //Se setea el parmetro p_sent.executeQuery(); //Retorna objeto de tipo ResultSet

Result Set

Clase que controla la recuperacin de los registros. Representa un cursor (iterador) sobre los resultados

Movimiento: mtodos next() y previous() Inicialmente el cursor est posicionado antes del primer registro.

Cada vez que se realice una consulta se pierden los resultados

Result Set

Tenemos dos alternativas para acceder a las columnas del resultado:


rs.getString(nombre); Nombre de la columna rs.getString(1); Posicin en la consulta

El acceso por posicin es til cuando:


Acceso a una columna derivada, ej. calcular la media Cuando hay columnas con los mismos nombres (join)

Recuperacin de los valores de las columnas:


Mtodos de acceso (getXXX). Es conveniente leer los datos de izquierda a derecha. Para averiguar si se ha ledo un nulo: wasNull()

Mtodos de acceso

Ejemplo

Cerrar la Base de Datos

Es importante cerrar/liberar las conexiones una vez que ya no son usadas. De esta manera el objeto Connection ser marcado para ser recolectado por el Garbage Collector y, adems teniendo en cuenta que la cantidad de conexiones disponibles a una BD es limitada, es importante cerrar las conexiones que no son ms usadas. El mtodo destroy() es el apropiado para llevar a cabo esta accin.

public void destroy() {


try { dbCon.close(); } catch (Exception e) {.... } }

Anda mungkin juga menyukai