20
JDBC Java Database Connectivity CC52N - Computación para el trabajo grupal Profesor: Nélson Baloian Por: Edgard Pineda

JDBC

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: JDBC

JDBCJava Database Connectivity

CC52N - Computación para el trabajo grupal

Profesor: Nélson Baloian

Por: Edgard Pineda

Page 2: JDBC

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.

Page 3: JDBC

¿Qué hace JDBC? Establece una conexión a una

base de datos. Envía sentencias SQL. Procesa los resultados de estas

sentencias.

Page 4: JDBC

Arquitectura JDBC Arquitectura normal Puente JDBC-ODBC

Aplicaciones Java

JDBC API

Adm. de controladores JDBC

Controlador

JDBC

DB

Controlador

JDBC

DB

Aplicaciones Java

JDBC API

Adm. de controladores JDBC

C. ODBC

DB

C. ODBC

DB

Adm. de controladoresODBC

Puente JDBC/ODBC

Page 5: JDBC

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.

Page 6: JDBC

...Primer ejemplo básico Ejemplos de URL:

jdbc:mysql://myserver:4444/db1 jdbc:oracle://oraserver jdbc:odbc:mydatabase

Page 7: JDBC

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.

Page 8: JDBC

...JDBC vs. ODBC JDBC es una interfaz natural en

Java.

Page 9: JDBC

Modelos de acceso a BD De 2 capas

La 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.

Aplicación

Java

JDBC

DBMS

Cliente

Servidor

BD

Protocolo

BD

Page 10: JDBC

Modelos de acceso a BD De 3 capas

Los comandos son enviados a la capa intermedia de servicios, la cual envía sentencias SQL a la base de datos. Ésta las procesa y envía los resultados de vuelta a la capa intermedia, para luego ser enviados al cliente.

Permite un control de acceso y de actualización.

Provee ventajas de performance.

Aplicación

Java

JDBC

DBMS

Applet en Java o

Navegador HTML

Cliente (GUI)

Llamadas HTTP,

RMI,CORBA

Servidor

BD

Servidor

Protocolo

BD

Page 11: JDBC

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.

Page 12: JDBC

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.

Page 13: JDBC

...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

Page 14: JDBC

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

Page 15: JDBC

...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.

Page 16: JDBC

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.

Page 17: JDBC

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.

Page 18: JDBC

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.

Page 19: JDBC

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();

}

Page 20: JDBC

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");

}