Está en la página 1de 17

Desarrollo de Aplicaciones Web

Java

Ing. Paul Carbajal Silva

Tabla de Contenidos

JDBC Java Database Connectivity


Qu es JDBC?.
Acceso a una base de datos va JDBC. Ejecutando queries con JDBC. Actualizando data con JDBC. Trabajando con multiples resultsets. SQL Exceptions.

Java Database Connectivity


API que permite la ejecucin de operaciones sobre bases de datos desde Java independientemente del sistema operativo donde se ejecute o de la base de datos a la cual se accede utilizando el lenguaje SQL.

Casi todas las aplicaciones necesitan acceder a datos. La gran parte de la data de una organizacin se encuentra almacenada en una DB relacional. Aplicaciones desarrolladas en Java tienen que acceder a

la informacin de la organizacin.

Java Database Connectivity


BD Relacional

Clases Java Cliente

JDBC

Cliente Java

Servidor

Proceso JDBC - Introduccin


Existen 4 pasos que toda aplicacin Java debe respetar para acceder a una BD
utilizando JDBC: Cargar los drivers necesarios. Identificar la BD. Establecer la conexin con la BD.

Ejecutar las sentencias SQL.


JDBC esta implementado por cerca de 20 clases e interfaces ubicadas dentro del paquete java.sql, dichas clases estan categorizadas en tres grupos: Conectividad (Ej: DriverManager, Connection) Procesamiento de datos (Ej: Statement, ResultSet) Support (Ej: Types, Date)

Proceso JDBC - Esquema


1

DriverManager
getConnection() Connection

createStatement() executeUpdate() Statement

UPDATE, INSERT, DELETE SQL commands

OR:

executeQuery()
SELECT SQL command

int (update count)


3

ResultSet

check update count


4

loop through result set

connection.close()

Proceso JDBC Cdigo Fuente


import java.sql.*; import java.util.*; public class JDBCQuery{ public static void main(String args[])throws Exception { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
3 1

Connection con = DriverManager.getConnection ("jdbc:odbc:SampleDB","dba","sql"); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("select * from table1"); while( rs.next() ) { System.out.print(rs.getString( 1 ) + " " + rs.getString( 2 )); System.out.println(); } 4 con.close();

} }

JDBC Driver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")
Los drivers JDBC son administrados por la clase DriverManager. Ms de un driver puede ser utilizado. Los drivers son brindados por la BD, no por JDBC. Un driver es cargado dinamicamente mediante el uso del mtodo

Class.forName().
Cuando un driver es cargado, automticamente es instanciado y registrado con el DriverManager. El driver utilizado en el ejemplo es denominado el bridge driver JDBC/ODBC, el cual es brindado por Sun.

JDBC Driver - Categoras


JDBC/ODBC Bridge (Categora 1) Permite el acceso JDBC a un base de datos a travs de un driver ODBC.

Java a API Nativa Parte en Java (Categora 2)


Convierte las llamadas JDBC en llamadas nativas API del RDBMS. Protocolo de Red Todo en Java (Categora 3) Convierte las llamadas JDBC en un protocolo independiente del RDBMS. Protocolo Nativo Todo en Java (Categora 4) Convierte las llamadas JDBC al protocolo de red utilizado por el RDBMS.

Conexin a la Base de Datos


Connection con = DriverManager.getConnection ("jdbc:odbc:SampleDB","dba","sql");

Un objeto connection debe ser creado para acceder a la base de datos. A travs del objeto connection se ejecutan los SQL statements y se recuperan los resultados del statement ejecutado. DriverManager.getConnection() es el mtodo utilizado para establecer la

conexin y crear una instancia del objeto connection:


Este mtodo recibe como parmetro el JDBC URL. Cada driver tendr su propio JDBC URL.

Creando un Statement
Statement stmt = con.createStatement();
Para enviar un comando SQL al servidor de base de datos es necesario crear un objeto Statement. Mediante el uso del mtodo createStatement() creamos un objeto Statement. Existen 3 tipos de Statement:

Statement
Utilizado para sentencias de SQL simples sin envo de parmetros. PreparedStatement (hereda de Statement) Utilizado para sentencias SQL pre-compiladas que reciben parmetro. CallableStatement (hereda de PreparedStatemen) Utilizado para ejecutar stored procedures que reciben parmetros de entrada y de salida.

Enviar SQL a la Base de Datos


Una sentencia SQL que se enva a la base de datos puede : Obtener un resultset de la base de datos (sentencia SELECT). Modificar la base de datos a travs de una sentencia DDL (create table) o una sentencia DML (insert, update, delete). Obtener varios resultsets o varios updates o una combinacin de ambos. Mtodo requerido :
executeQuery()

executeUpdate()

execute()

Consultando la Base de Datos : ResultSet


ResultSet rs = stmt.executeQuery( "select * from table1" );

Utilizar el mtodo executeQuery() cuando la sentencia SQL devuelva un solo resultset.

El mtodo executeQuery() puede ser utilizado con cualquiera de los objetos


Statement, PreparedStatemen o CallableStatement. executeQuery() devuelve un objeto ResultSet. La data almacenada en un objeto ResultSet puede ser accesada a travs de los mtodos getXXX() para cada columna de los registros que forman parte del resultado.

Obteniendo Valores de las Columnas de un ResultSet


ResultSet rs = stmt.executeQuery( "select * from table1" ); while( rs.next() ) { System.out.print(rs.getString( 1 ) + " " + rs.getString( 2 )); System.out.println(); }
Para acceder a las filas de un ResultSet utilizar el mtodo next(): Cada llamada a next(): Posiciona en una nueva fila y devuelve el valor true Retorna false si no hay mas filas para procesar El cursor de un ResultSet inicialmente es posicionado antes de la

primera fila.
Es posible acceder a cada columna de las filas de un ResultSet mediante el mtodo getXXX() envindole como parmetro el nmero o el nombre de la columna.

Modificando la Base de Datos


Si el SQL que se enva a la base de datos devuelve alguno de los siguientes

resultados:
Uno o ms resultsets. Uno o ms update counts. Cualquier combinacin de resultsets y update counts. Ser necesario utilizar el mtodo execute(). Devolver mltiples resultsets / update counts es poco comn. Puede suceder cuando:

Incluimos mltiples sentencias SQL en un objeto Statement.


Llamamos a stored procedures que devuelven mltiples resultsets y/o modifican la base de datos de alguna manera.

Uso del Mtodo execute()


boolean execute(String sql) throws SQLException

execute() devuelve un valor true, si un ResultSet es devuelto primero. Para procesar el ResultSet, utilizar el mtodo getResultSet(). Utilizar Statement.getMoreResults() para determinar si hay mas resultsets para procesar, este mtodo devuelve un boolean. Si existe otro ResultSet, continuar utilizando getResultSet(). Sin embargo, si execute() o getResultSet() devuelve false, entonces ser necesario verificar si algn update fue realizado.

Una llamada a Statement.getUpdateCount() devolver:


El nmero de filas afectadas. -1 si es un ResultSet o ya no hay mas resultados.

La Clase SQLException
SQLException hereda de la clase java.lang.Exception.
Es arrojada cuando ocurre un error. Mltiples SQLExceptions pueden ser arrojadas a la vez: Si muchas excepciones fueran arrojadas, utilizar SQLException.getNextException() para obtener la siguiente excepcin. SQLException provee tres tipos de informacin: SQLState recuperado mediante SQLException.getSQLState().

El estado es provedo por el driver (vendedor).


La descripcin del error recuperada mediante SQLException.getMessage(). El cdigo de error especfico provedo por el vendedor recuperado mediante SQLException.getErrorCode().

También podría gustarte