Download JDBC - DCC

Document related concepts
no text concepts found
Transcript
JDBC
Java Database Connectivity
CC52N - Computación para el trabajo grupal
Profesor: Nélson Baloian
Por: Edgard Pineda
Introducción



JDBC es una API, formada por
conjunto de clases e interfaces en
el lenguaje de programación Java,
para ejecutar sentencias SQL.
Ofrece un estándar de conexión a
cualquier base de datos disponible
en el mercado.
Permite obtener los datos en forma
fácil y cómoda en ambientes
cliente-servidor a través de
Internet/Intranet.
¿Qué hace JDBC?



Establece una conexión a una
base de datos.
Envía sentencias SQL.
Procesa los resultados de estas
sentencias.
Arquitectura JDBC

Arquitectura normal

Puente JDBC-ODBC
Aplicaciones Java
Aplicaciones Java
JDBC API
JDBC API
Adm. de controladores JDBC
Adm. de controladores JDBC
Puente JDBC/ODBC
Controlador
JDBC
DB
Controlador
JDBC
Adm. de controladoresODBC
C. ODBC
C. ODBC
DB
DB
DB
Primer ejemplo básico
Connection con = DriverManager.getConnection (
"jdbc:odbc:nombre", "login",
"password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c
FROM Table1");
while (rs.next()) {
int x = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
}

JDBC usa una URL para
especificar la base de datos.
...Primer ejemplo básico

Ejemplos de URL:
 jdbc:mysql://myserver:4444/db1
 jdbc:oracle://oraserver
 jdbc:odbc:mydatabase
JDBC vs. ODBC




Se puede usar ODBC desde Java,
pero el puente JDBC-ODBC ayuda
bastante.
ODBC tiene una interfaz tipo C
rompiendo el esquema de
seguridad, robustez e
implementación de Java.
ODBC mezcla funciones simple y
complejas.
Los controladores de ODBC deben
ser instalados en cada cliente.
...JDBC vs. ODBC

JDBC es una interfaz natural en
Java.
Modelos de acceso a BD

Aplicación
Java
 La
Cliente
JDBC
Protocolo
BD
DBMS
De 2 capas
Servidor
BD
aplicación “habla” directamente
con la base de datos.
 Controlador JDBC se comunica
con el sistema específico que
maneja la base de datos.
 La base de datos puede estar en
otra máquina, con lo que el cliente
se comunica por red. Esta es la
configuración llamada
cliente/servidor.
Modelos de acceso a BD
Cliente (GUI)
Applet en Java o
Navegador HTML

De 3 capas
 Los
comandos son enviados a la
capa intermedia de servicios, la
Llamadas HTTP,
cual envía sentencias SQL a la
RMI,CORBA
base de datos. Ésta las procesa y
Aplicación
Servidor
envía los resultados de vuelta a la
Java
capa intermedia, para luego ser
JDBC
enviados al cliente.
Protocolo
BD
 Permite un control de acceso y de
actualización.
Servidor
DBMS
 Provee ventajas de performance.
BD
Categorías de los
controladores JDBC




Puente JDBC-ODBC.
Parte API Nativa-Parte Java. Se
convierte las llamadas JDBC al
sistema de la Base de datos.
JDBC-Red. Es sólo Java. Las
llamadas JDBC son convertidas a
un protocolo de red independiente
del sistema de la base de datos.
Este protocolo es convertido en un
servidor
Protocolo Nativo. Es sólo Java. Se
usa un protocolo de red con la BD.
Conexión




Un objeto “Connection” representa
una conexión a una base de datos.
Una sesión incluye las sentencias
SQL que son ejecutadas y los
resultados de éstas.
Establecer la conexión:
“DriverManager.getConnection”
La clase “DriverManager” intenta
ubicar el controlador que pueda
conectarse a la base de datos
representada en la URL.
...Conexión

Sintáxis de una URL JDBC:
 jdbc:<subprotocolo>:<subnombre>
 <subprotocolo>
es el nombre del
controlador o del mecanismo de
conexión. Ejemplo: odbc.
 <subnombre> es la identificación
de la base de datos. El formato
varia según el controlador
especificado. Ejemplo:
//servidor:puerto/etc
Enviando sentencias SQL

JDBC permite que se escriba
cualquier tipo de sentencia SQL.
Aunque ésta fuera dependiente de
la base de datos sólo se correría el
riesgo de incompatibilidad al
cambiar de base de datos.
 Llamadas
a procedimientos
almacenados
 Formatos de fecha
...Enviando sentencias SQL

JDBC provee 3 clases:
 “Statement”:
Este objeto es usado
para enviar sentecias SQL
simples. Es creado por el método
“createStatement”.
 “PreparedStatement”: Este objeto
es usado para sentencias que
requieren uno o más parámetros.
La sentencia es precompilada y
guardada para uso futuro.
 “CallableStatement”: Es usado
para ejecutar procedimientos
almacenados.
Transacciones



Una transacción consiste en una o
más sentencias que han sido
ejecutadas y luego confirmadas
(commit) o deshechas (rolled back)
Auto-commit está predeterminado.
Si Auto-commit está desactivado
se debe usar los métodos “commit”
o “rollback” explícitamente.
Procesando respuestas


Las respuestas a las sentencias
SQL se reciben en el objeto
“ResultSet” que mantiene las filas.
Este objeto provee el acceso a los
datos de esas filas a través de un
conjunto de métodos “get”, los
cuales, a su vez, permiten el
acceso a cada columna de estas
filas.
Cargando la clase del
controlador JDBC

Ejemplo:
Class.forName(”empresa.db.Driver");

Esto crea una instancia del
controlador y llama al método
“DriverManager.registerDriver”
registrando este controlador en la
lista de controladores disponibles
para conexiones.
Ejemplo de sentencia
Connection con = DriverManager.getConnection (
"jdbc:odbc:nombre", "login",
"password");
PreparedStatement pstmt = con.prepareStatement(
“UPDATE tabla1 SET m=? WHERE x=?”);
pstmt.setString(1, "Hola");
for (int i = 0; i < 10; i++) {
pstmt.setInt(2, i);
int rowCount = pstmt.executeUpdate();
}
Primer ejemplo básico
Connection con = DriverManager.getConnection (
"jdbc:odbc:nombre", "login",
"password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c
FROM Table1");
while (rs.next()) {
int x = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
}