Sie sind auf Seite 1von 44

Programación con JDBC

Por: Carlos Carreño


ccarreno@jbossgroup.org
¿Qué es JDBC?
JDBC es el acrónimo de Java DataBase Conectivity

Es una especificación de un conjunto de clases y


métodos de operación (API) que permiten a cualquier
programa Java acceder a sistemas de bases de datos.

El api JDBC lo podemos encontrar en los paquetes


java.sql y javax.sql y sirven para:
establecer conexiones con bases de datos
enviar sentencias SQL a dichas BDs
procesar los resultados

JDBC permite ejecutar instrucciones SQL (Structured


Query Language: Lenguaje estructurado de consultas) 2
Arquitectura básica

Utiliza drivers para conectarse a distintas base de datos: SQL


Server, Oracle, mySQl, posgreSQL, Access, etc.
3
Características
El JDBC provee al desarrollador la capacidad de unirse
o conectarse a los sistemas de bases de datos
relacionales.

JDBC “normaliza” la mayor parte de las operaciones


(las hace independientes de la base de datos utilizada y
por tanto portables).

JDBC no comprueba que las sentencias SQL son


correctas, sencillamente las pasa a la base de datos.

4
Características
JDBC ofrece igual funcionalidad que ODBC (Open
Database Connectivity) de Microsoft.
Problema: ODBC tiene interfaz C.
La gran mayoría de BD disponen ya de drivers para
trabajar con ODBC.
En el JDK se suministra un puente JDBC-ODBC para
convertir llamadas JDBC a ODBC y poder acceder así a
BDs que ya tienen un driver ODBC mediante JDBC.
En el caso de hacerlo así, hay que registrar la BD
correspondiente para ser usada con ODBC

5
Primavera – 2006
Conectividad ODBC
ODBC – Open DataBase Connectivity
Interfaz de aplicaciones (API) para acceder a datos en
sistemas gestores de bases de datos utilizando SQL

Aplicación Cliente
Data Source Name (DSN)

ODBC API
ODBC Driver

ODBC Driver

ODBC
Database
6
Conectividad JDBC-ODBC
Se convierten todas las llamadas JDBC a ODBC y se
realiza la conversión correspondiente de los resultados

Aplicación Java
API JDBC
Puente JDBC-ODBC
API ODBC

Driver ODBC

BD

7
Conectividad JDBC-ODBC
Para poder establecer el puente JDBC ODBC se debe
tener creado una fuente de datos (DSN).
DSN( Data Source Name) Este Origen de datos permite
indicar cual es el driver a utilizar y cual es el archivo.

Configuración: Panel de control  Herramientas


administrativas

Observación: Crear una base de datos en


access antes de configurar el DSN

8
Configuración DSN
Configuración: Panel de control  Herramientas
administrativas

9
Configuración DSN
Configuración: Orígenes de datos

10
Configuración DSN
Configuración: Asociar Base de Datos

11
7 pasos básicos para programar en
JDBC

1. Cargar el driver de la base de datos a acceder


2. Definir la “URL” de la Base de Datos
3. Establecer la conexión
4. Crear una orden SQL
5. Ejecutarla
6. Procesar los resultados
7. Cerrar la conexión

12
1. Cargar driver
Lo primero es hacer una llamada al Driver JDBC-ODBC
para cargarlo.

NOTA: Para Oracle : oracle.jdbc.driver.OracleDriver

13
2. Definir la URL
Una vez cargado el driver hay que definir la dirección
de la base de datos con la cual se va a trabajar.

NOTA: Para oracle jdbc:oracle:thin:@192.168.10.188:1521:orcl


14
3. Establecer la conexión
Para solicitar una conexión a la base de datos se usa la
clase DriverManager.

15
4. Crear una orden SQL
El siguiente paso requiere la creación de un objeto de la
clase Statement. Él se encargará de enviar la consulta
en SQL a la base de datos.
Es necesaria una instancia activa de una conexión para
crear el objeto Statement

16
4. Crear una orden SQL
Las ordenes de SQL son String

17
5. Ejecutar una orden SQL
JDBC devuelve los resultados en un objeto de la clase
ResultSet

18
6. Procesar los resultados
Tiene un método next() para moverse a la siguiente
tupla de registro, cada invocación al método next()
mueve el cursor a la siguiente fila
Se utiliza metodos getXX() para obtener String, int,
float, etc.
Por
nombre
de la
columna

Por
número
de la
columna
19
7. Cerrar la conexión
Abrir una conexión es caro así que debe posponerse el
cierre de la conexión si se van a ejecutar más consultas
a la misma base de datos

20
7. Cerrar la conexión
Abrir una conexión es caro así que debe posponerse el
cierre de la conexión si se van a ejecutar más consultas
a la misma base de datos

21
En Oracle, con el driver nativo
 Todo en uno
Comandos Básicos de SQL
Crear Tabla
CREATE TABLE tabla
( codigo int,
nombre char(20),
estado char(2)
)
Borrar Tabla
DROP TABLE tabla

• Insertar Registro
INSERT INTO tabla
VALUES (valor1, valor2,…, valorN)

23
Comandos Básicos de SQL
Actualizar Registros
UPDATE tabla
SET campo1=valor1, campo2=valor2,…, campoN=valorN
WHERE criterio

Eliminar Registros
DELETE FROM tabla
WHERE criterio

• Seleccionar Registros
SELECT campo1
FROM tabla
WHERE condición

24
Ejemplo Nº1
A. Crear una base de datos en access con los
siguientes datos:
Rut
Nombre
Apellido
Domicilio
Teléfono
B. Configurar el DSN.
C. Crear una pequeña aplicación en java que se
conecte a la base de datos y muestre a través de la
consola los datos incorporados

25
Ejemplo Nº 1 - Solución

26
Ejemplo Nº 1 - Solución

27
Ejemplo Nº 1 - Solución

28
Ejemplo Nº 2
A. Crear una base de datos en access con los
siguientes datos:
Nombre
Usuario
Password

B. Configurar el DSN.

C. Crear una pequeña


aplicación en java que simule
el ingreso de un password.

29
Ejemplo Nº 2 - Solución

30
Ejemplo Nº 2 - Solución

31
Ejemplo Nº 2 - Solución

32
Ejemplo Nº 2 - Solución

33
Ejemplo Nº 2 - Solución

34
Conceptos Avanzados

 “Tips” solo para tigres!

35
Patrón DAO
 CARACTERÍSTICAS:
 Consiste en utilizar un objeto como medio de
acceso a BD.
 Abstrae y encapsula las operaciones
relacionadas con el tratamiento de la base de
datos.
Modelo del Patrón DAO
Usando DataSources
Definiendo Data Sources
 Definiendo Data Source oracle-ds.xml
Patrón de Diseño: Service Locator
 Características:
 Utilizado para abstraer toda la utilización de
JNDI y de la creación de cualquier contexto
inicial de complejo.
 Encapsula la búsqueda o creación de los
objetos Home y EJB.
 Proporciona un punto de control, que puede ser
llamado por múltiples clientes.
Service Locator
 Modelo del patron de diseño
Ejemplo:ServiceLocator
public class ServiceLocator {
InitialContext ctx=null;

private static ServiceLocator locator;

static{
try{
locator = new ServiceLocator();
}catch(Exception e){
e.printStackTrace();
}
}

public ServiceLocator(){ }

public Object getLocal(String jndiName){


try {
ctx=new InitialContext();
Object objref = ctx.lookup(jndiName);
return objref;
} catch (NamingException e) {
e.printStackTrace();
}
return null;
}
public Object getRemote(String jndiName){
try {
ctx=new InitialContext(getPropiedades());
Object objref = ctx.lookup(jndiName);
return objref;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

private Properties getPropiedades() throws FileNotFoundException, IOException{


Properties propiedades= new Properties();
FileInputStream archivo= new
FileInputStream(ServiceLocator.class.getResource("jndi.properties").getFile());
propiedades.load(archivo);
return propiedades;
}

static public ServiceLocator getInstance(){


return locator;
}
}
Archivo: jndi.properties
java.naming.factory.initial=org.jnp.interfaces.NamingContextFa
ctory
java.naming.provider.url=127.0.0.1:1099
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfac
es

Das könnte Ihnen auch gefallen