Está en la página 1de 11

Java

Romn Gajardo

JDBC
Java DataBase Connectivity

!
!
!

JDBC es una biblioteca de clases que permite la conexin con bases de datos utilizando Java.

Permite realizar operaciones CRUD(create, read, update, delete) sobre una bases de datos
relacionases utilizando SQL (Structured Query Language).

Una de las ventajas de JDBC es que la aplicacin que desarrollars ser independiente de la
plataforma, ya que es muy fcil cambiar de un motor de base de datos a otro, es decir, no
necesitamos modificar el 100% de nuestro cdigo si quisiramos cambiar a la base de datos de
Oracle, o SQL Server.

Muy importante de mencionar es que cada fabricante de base de datos, se encargar de


proporcionar un driver JDBC especfico para su base de datos.

!
Java

Java

Romn Gajardo

Componentes de la API JDBC


JDBC se divide en tres componentes, que se encuentran en la librera java.sql:

Conexin

Comando

!
!
Resultado

!
TIPOS DE DRIVER JDBC
Existen cuatro tipos de driver o controladores JDBC:

El tipo de driver utilizado en los proyectos a trabajar corresponden al Driver tipo 4, el cual es
suministrado por el fabricante de la base de datos y su finalidad es convertir llamadas JDBC en
un protocolo de red comprendido por la base de datos. Es el mtodo ms eficiente de acceso a
base de datos.

!
Es una de las mejores soluciones ya que su cdigo esta escrito 100% en Java,

Java

Java

Romn Gajardo

Uso de JDBC en aplicaciones Java

!
Para obtener una conexin desde una base de datos, se puede obtener desde un
DriverManager o a travs de un DataSource, la diferencia entre ambos es que el DataSource
est orientado para trabajar en entornos Web principalmente con la plataforma Java Enterprise
Edition (JEE), Mientras que DriverManager puede ser utilizado tanto para aplicaciones JSE o
JEE.

!
!
!

Java

Java

Romn Gajardo

Pasos para utilizar JDBC en aplicaciones Java

Los pasos para poder realizar una instruccin SQL desde Java se resume en 5 pasos, el cual el
primer paso corresponde a la carga del driver en donde se debe especificar la ruta completa
de la clase a cargar dependiendo de la base de datos a utilizar (MySQL, Postgre, Oracle,
SQL Server, etc).
El segundo paso corresponde a obtener la conexin utilizando la clase DriverManager, para ello,
esta clase provee de un metido el cual se debe especificar la url de la base de datos, el
usuario de la base de datos y el password de la base de datos.
En el tercer paso, con la conexin obtenida se prepara el comando SQL que de acuerdo a la
figura existen tres maneras de poder crear un comando SQL. El comando visto en clases
corresponde a PreparedStatement.
En el cuarto paso se procede a utilizar los mtodos de PreparedStatement de los cuales los mas
relevantes que permiten ejecutar sentencias SQL, tal como se muestra en la figura.

Finalmente se recomienda siempre una vez finalizada la consulta SQL cerrar la conexin a la
base de datos.

!
!
Java

Java

Romn Gajardo

PASO 1: Cargar el Driver.


La sintaxis para cargar el Driver es:

donde el nombre del driver es una ruta que es dada por el fabricante de la base de datos. En
nuestro caso utilizamos el conector de MySQL para cargar el Driver por lo tanto la sintaxis para
cargar el driver de MySQL es

Esta instruccin carga el driver de la base de datos y permite que podamos conectarnos con
MySQL a travs de la instruccin DriverManager.getConnection

PASO 2: Obtener la Conexin.


Una vez cargado el driver en el paso 1, se debe obtener la conexin a travs de DriverManager,
y su mtodo getConnection al cual hay que especificar la url, usuario y password de la base de
datos:

!
En el caso de MySQL la manera de obtener una conexin es:

!
Java

Java

Romn Gajardo

PASO 3: Crear el comando SQL


Ya que los pasos 1 y 2 corresponden a la obtencin de la conexin hacia la base de datos,
ahora podemos crear Sentencias SQL utilizando la interface PreparedStatement.
PreparedStatement es una interface que nos permite ejecutar instrucciones SQL
precompiladas. Ejemplo:

En este ejemplo, podemos ver una consulta precompilada ya que la instruccin SELECT no est
100% lista puesto que existe en la condicin WHERE un ? el cual no se le ha definido un valor.

Los signos de interrogacin ? se denominan parmetros de entrada y se especifican por


posicin. En el ejemplo anterior, tenemos una parmetro de entrada y ocupa la posicin 1.

Los mtodos para definir estos parmetros de entrada son del tipo setXXX, por ejemplo:

pstmt.setInt(1,20);> el signo tendr el valor de 20

Un ejemplo con una instruccin INSERT sera:

!
Como podemos ver en el ejemplo, adems de setInt setString, existen muchos mtodos para
especificar parmetros de entrada.

Java

Java

Romn Gajardo

Una vez que se hayan definido cada uno de los argumentos de entrada, PreparedStatement
entrega dos mtodos que permiten ejecutar sentencias como INSERT, UPDATE, DELETE
(executeUpdate mostrado arriba) y SELECT (executeQuery)

!
Cuando se ejecutan sentencias SELECT usando el metodo executeQuery, se obtiene como
respuesta un conjunto de resultados, que en Java es representado por un objeto llamado
ResultSet.

El objeto ResultSet controla la recuperacin de los registros. Representa un cursos o iterador


sobre los resultados. Posee un mtodo que permite moverse fila a fila el cual se denomina
next()
Adems se tienen dos alternativas para acceder a las columnas del resultado

rs.getString(Nombre); //acceder por el nombre de la columna


rs.getString(2);//acceder por el numero de la columna (por posicin)

!
!
!
!
Java

Java

Romn Gajardo

La recuperacin de los valores de las columnas se realiza a travs de los mtodos getXXX,
donde, los mtodos getXXX que se pueden utilizar, se especifican en la siguiente tabla:

!
Cada uno de estos pasos se definen en dos clases una es la clase Conexin, la cual se encarga
de brindar mtodos como:

conectar(): se encarga de cargar el driver(Class.forName) y obtener la conexin(getConnection),


e s t e m e t o t o d e b e u t i l i z a r d o s e x c e p c i o n e s d e l a s c u a l e s c o r re s p o n d e n a
ClassNotFoundException en caso de que no exista el driver o est mal escrito y SQLException
en caso de haber un error en la URL, usuario o password de la base de datos.

!
!
!
Java

Java

Romn Gajardo

desconectar(): se encarga de cerrar la conexin, una vez que se ha realizado la consulta SQL.
(close)

!
prepararConsulta(String sql): se encarga de crear un PreparedStatement con el fin de cargar
una consulta SQL precompilada (INSERT, UPDATE, DELETE, SELECT) (prepareStatement()),
este mtodo utiliza una excepcin en caso de que la consulta SQL est mal redactada.

definirINT(int index, int valor): se encarga de definir un parametro de entrada ?, en caso de


que el signo de interrogacin sea de tipo int (setInt), tambin utiliza una excepcin del tipo
SQLException en caso de que el indice o la posicin no exista.

!
Java

Java

Romn Gajardo

definirSTRING(int index, String valor): se encarga de definir un parametro de entrada ?, en


caso de que el signo de interrogacin sea de tipo String (setString), tambin utiliza una
excepcin del tipo SQLException en caso de que el indice o la posicin no exista.

!
ejecutarUPDATE(): se encarga de ejecutar una sentencia SQL de tipo INSERT, UPDATE,
DELETE (executeUpdate), para ejecutar este mtodo es necesario definir antes todos los
parmetros de entrada, utiliza un SQLException en caso que no estn definidos los parmetros
de entrada.

ejecutarSELECT(): se encarga de ejecutar una sentencia SQL de tipo SELECT (executeQuery),


para ejecutar este mtodo es necesario definir antes todos los parmetros de entrada si es que
tiene, utiliza un SQLException en caso que no estn definidos los parmetros de entrada y que
la instruccin SQL sea de tipo SELECT.

Java

10

Java

Romn Gajardo

Por otra parte, existe una clase que se encarga de ejecutar cada uno de los mtodos descritos
anteriormente, la cual se denomina DAO (Data Access Object) la cual se encargar de tener
mtodos que se encarguen de insertar actualizar eliminar y consultar un registro en la base de
datos. ver proyecto realizado en clases.

Java

11