Introd a JDBC51

24
Introducción a la Introducción a la Tecnología JDBC Tecnología JDBC

description

52

Transcript of Introd a JDBC51

Page 1: Introd a JDBC51

Introducción a la Introducción a la Tecnología JDBCTecnología JDBC

Page 2: Introd a JDBC51

¿Qué aprenderemos durante esta ¿Qué aprenderemos durante esta semana?semana?

Conceptos Previos: Sistemas de Gestión de la Conceptos Previos: Sistemas de Gestión de la InformaciónInformación

Introducción a JDBCIntroducción a JDBC Definición de JDBCDefinición de JDBC Funciones de JDBCFunciones de JDBC Drivers JDBCDrivers JDBC Las Interfaces y clases del JDBCLas Interfaces y clases del JDBC

Page 3: Introd a JDBC51

CONCEPTOS PREVIOS: CONCEPTOS PREVIOS: Sistemas de Gestión de la InformaciónSistemas de Gestión de la Información

Base de DatosBase de Datos Forma de almacenamiento de informaciónForma de almacenamiento de información Estructura y DatosEstructura y Datos Modelo RelacionalModelo Relacional

Gestor de Base de DatosGestor de Base de Datos Aplicación para manipular bases de datosAplicación para manipular bases de datos Oracle, Access, ...Oracle, Access, ...

SQL – SQL – Structured Query LanguageStructured Query Language Lenguaje estándar para crear, examinar y Lenguaje estándar para crear, examinar y

manipular bases de datos relacionalesmanipular bases de datos relacionales Permite manipular bases de datos en diferentes Permite manipular bases de datos en diferentes

sistemas que soporten el estándarsistemas que soporten el estándar

Page 4: Introd a JDBC51

Modelo Relacional Modelo Relacional (Tablas)(Tablas)

Campo, Atributo, Columna

Registro, Fila

Page 5: Introd a JDBC51

Modelo Relacional Modelo Relacional (Relaciones)(Relaciones)

Tabla

RelaciónRelación

Clave

Page 6: Introd a JDBC51

Introducción a JDBCIntroducción a JDBC

JDBC también JDBC también proporciona proporciona una base común para la una base común para la construcción de construcción de herramientas y utilidadesherramientas y utilidades de de alto nivel.alto nivel.

Java Database Connectivity Java Database Connectivity (JDBC)(JDBC) es una interfase de acceso a bases de datos estándar SQL que proporciona un acceso uniforme a una gran variedad de bases de datos relacionales.

El paquete actual de JDK incluye JDBC y el puente JDBC-ODBC. El paquete actual de JDK incluye JDBC y el puente JDBC-ODBC. Estos paquetes son para su uso con JDK 1.0Estos paquetes son para su uso con JDK 1.0

Page 7: Introd a JDBC51

Definición de JDBCDefinición de JDBC

JDBC es una API, JDBC es una API, formada por conjunto de formada por conjunto de clases e interfaces en el lenguaje de clases e interfaces en el lenguaje de programación Javaprogramación Java, para ejecutar , para ejecutar sentencias SQLsentencias SQL sobre una base de datos sobre una base de datos (externa)(externa)..

Ofrece un estándar de conexiónOfrece un estándar de conexión a cualquier a cualquier base de datos disponible en el mercado.base de datos disponible en el mercado.

Permite Permite obtener los datos en forma fácil y obtener los datos en forma fácil y cómoda en ambientes cliente-servidorcómoda en ambientes cliente-servidor a a través de Internet/Intranet.través de Internet/Intranet.

Page 8: Introd a JDBC51

Funciones JDBCFunciones JDBC

Permite Permite establecerestablecer una conexión una conexión a a una base de datos.una base de datos.

Permite Permite enviarenviar sentencias SQL sentencias SQL.. Permite Permite procesarprocesar los resultados los resultados de de

estas sentencias.estas sentencias. Las clases que permiten esto están Las clases que permiten esto están

en el paquete java.sql (hay que en el paquete java.sql (hay que importarlo)importarlo)El API JDBC se divide en :

java.sql (Funcionalidad básica) J2SEjavax.sql (Funcionalidad avanzada) J2EE

Page 9: Introd a JDBC51

Driver del JDBCDriver del JDBC Los Drivers también llamados Manejadores, Los Drivers también llamados Manejadores,

son un conjunto de clases que implementan son un conjunto de clases que implementan las clases e interfaces del API JDBC las clases e interfaces del API JDBC necesarias para que una aplicación Java necesarias para que una aplicación Java pueda conectarse con una BD. pueda conectarse con una BD.

Cuando los desarrolladores de una BD Cuando los desarrolladores de una BD desean que esta pueda ser accesible desean que esta pueda ser accesible mediante JDBC éstos deben construir un mediante JDBC éstos deben construir un driverdriver para esa base de datos; para esa base de datos; la misión del la misión del manejador será traducir comandos estándar manejador será traducir comandos estándar del API JDBC al protocolo nativo de esa del API JDBC al protocolo nativo de esa base de datos.base de datos.

Page 10: Introd a JDBC51

Tipos de Drivers o Tipos de Drivers o ManejadoresManejadoresPuente JDBC-ODBC (tipo1)Puente JDBC-ODBC (tipo1)

Page 11: Introd a JDBC51

Tipos de Drivers o Tipos de Drivers o ManejadoresManejadoresManejador de API nativo (tipo2)Manejador de API nativo (tipo2)

Page 12: Introd a JDBC51

Tipos de Drivers o Tipos de Drivers o ManejadoresManejadoresManejador de JDBC-Net (tipo3)Manejador de JDBC-Net (tipo3)

Page 13: Introd a JDBC51

Arquitectura JDBCArquitectura JDBC

Programa Java

APIJDBC

DriverJDBC

Driver Servidor

JDBC

PuenteJDBC-ODBC

API delproveedor

Base de Datos

En el servidorEn el cliente

Page 14: Introd a JDBC51

Arquitectura JDBCArquitectura JDBC

Page 15: Introd a JDBC51

Las Clases e Interfaces Las Clases e Interfaces del JDBCdel JDBC

La Clase DriverManagerLa Clase DriverManager La interfaz ConnectionLa interfaz Connection La interfaz StatementLa interfaz Statement La interfaz ResultSetLa interfaz ResultSet

Page 16: Introd a JDBC51

La Clase La Clase DriverManagerDriverManager

Como su nombre indica, esta clase Como su nombre indica, esta clase es la es la administradora de los diversos drivers administradora de los diversos drivers que pueden existir en nuestra aplicación que pueden existir en nuestra aplicación con la finalidad de acceder a varias bases con la finalidad de acceder a varias bases de datos que emplean distintos de datos que emplean distintos manejadores, o bien ambas situaciones a manejadores, o bien ambas situaciones a la vez. De ahí el interés de contar con este la vez. De ahí el interés de contar con este gestor de manejadores.gestor de manejadores.

Page 17: Introd a JDBC51

La Clase La Clase DriverManagerDriverManager

Page 18: Introd a JDBC51

Registro de un Manejador Registro de un Manejador (Driver)(Driver)

Es necesario primero cargar una clase con el driver de la base de datos (esto lo provee el vendedor de la DBMS)

Ejemplo: Registramos 3 drivers para nuestra aplicación.

Class.forName(“com.informix.jdbc.IfxDriver"); Class.forName(“com.novell.sql.LDAPDriver”);Class.forName("com.mysql.jdbc.Driver");Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Page 19: Introd a JDBC51

La Interfase ConnectionLa Interfase Connection Esta interfaz representa la conexión con Esta interfaz representa la conexión con

la Base de Datos y permite la gestión de la Base de Datos y permite la gestión de dicha conexión (Abrir, Cerrar la dicha conexión (Abrir, Cerrar la conexión).conexión).

La conexión puede estar en dos estados: La conexión puede estar en dos estados: Conectado o Desconectado.Conectado o Desconectado.

Ejemplo: Establecer la conexión con la Base de Datos

Connection cn=null; cn=DriverManager.getConnection("jdbc:odbc:datos","","");

Page 20: Introd a JDBC51

Métodos de la Interfase Métodos de la Interfase ConnectionConnection

void close() Libera lo los recursos de esta conexión.

void commit() Hace permanentes los cambios que se realizaron desde el ultimo commit o rollback.

Statement createStatement() Crea un objeto de tipo Statement.

bolean getAutoCommit() Indica si está en modo auto-commit.

DatabaseMetaData getMetaData() Devuelve un objeto tipo DatabaseMetaData con meta información a cerca de la base de datos contra la cual se ha abierto esta conexión..

CallableStatement prepareCall(String sql) Crea un objeto CallableStatement para ejecutar procedimientos almacenados SQL en la BD.

PreparedStatement prepareStatement(String sql) Crea un objeto PreparedStatement para ejecutar consultas SQL parametrizadas en la BD.

void rollback() Deshace todos los cambios realizados desde la última vez que se ejecutó commit o rollback

Page 21: Introd a JDBC51

Interfaz StatementInterfaz Statement Esta interfaz permite enviar y ejecutar Esta interfaz permite enviar y ejecutar

instrucciones SQL a la base de datos. Podemos instrucciones SQL a la base de datos. Podemos crear un objeto comando con el método crear un objeto comando con el método createStatement()createStatement() de la interfaz de la interfaz ConnectionConnection..

MétodoMétodo DescripciónDescripción

executeQueryexecuteQuery(String sql)(String sql) Exclusivo para ejecutar el Exclusivo para ejecutar el comando SELECTcomando SELECT

executeUpdateexecuteUpdate(String sql)(String sql) Para los comandos Para los comandos DELETE, DELETE, UPDATE, INSERT o una UPDATE, INSERT o una instrucción DDL instrucción DDL

executeexecute(String sql)(String sql) Podemos ejecutar cualquiera Podemos ejecutar cualquiera de los comandos anteriores.de los comandos anteriores.

Page 22: Introd a JDBC51

Interfaz StatementInterfaz StatementEjemplo: Crear el Objeto Statement

Statement stmt=null; stmt=cn.createStatement();

Ejemplo: Crear el Objeto StatementResultSet rs=stmt.executeQuery(“Select * from alumno”);ResultSet rs=stmt.executeQuery(“Select * from alumno”);

stmt.executeUpdate(“create table alumno (nombre stmt.executeUpdate(“create table alumno (nombre varchar(32), matricula integer, direccion varchar(40), añonac varchar(32), matricula integer, direccion varchar(40), añonac integer, ...);integer, ...);

stmt.executeUpdate(“insert into alumnos (‘Valeria Valencia ’, stmt.executeUpdate(“insert into alumnos (‘Valeria Valencia ’, 00998852678, ‘Calle bonita 223 Vitacura Stgo’, 1974, ...);00998852678, ‘Calle bonita 223 Vitacura Stgo’, 1974, ...);

stmt.executeUpdate(“update alumnos set direccion = ‘Av. stmt.executeUpdate(“update alumnos set direccion = ‘Av. Brasil 345’ where nombre = ‘Valeria Valencia’ ”);Brasil 345’ where nombre = ‘Valeria Valencia’ ”);

Page 23: Introd a JDBC51

Interfaz ResultSetInterfaz ResultSetEsta interfaz representa un Esta interfaz representa un esquema de esquema de datosdatos que es el que es el resultado de una consulta resultado de una consulta SelectSelect. Es una estructura generada similar . Es una estructura generada similar a la tabla, con la diferencia que a la tabla, con la diferencia que es virtuales virtual (se localiza en la memoria). La clase posee (se localiza en la memoria). La clase posee una serie de métodos una serie de métodos getXXX(int columna) getXXX(int columna) y y getXXX(String columna) getXXX(String columna) que permiten que permiten acceder a los resultados de la consulta. acceder a los resultados de la consulta.

Ejemplo: Crear un ResultSet y acceder a sus datos ResultSet rs=stmt.executeQuery(“Select * from alumno”);ResultSet rs=stmt.executeQuery(“Select * from alumno”);rs.next();rs.next();System.out.println(rs.getString(1)); //Accede a la 1ra. Columna System.out.println(rs.getString(1)); //Accede a la 1ra. Columna (tipo String)(tipo String)System.out.println(rs.getString(2)); //Accede a la 2da. Columna System.out.println(rs.getString(2)); //Accede a la 2da. Columna (tipo String)(tipo String)System.out.println(rs.getInt(3)); //Accede a la 3ra columna System.out.println(rs.getInt(3)); //Accede a la 3ra columna (tipo int)(tipo int)

Page 24: Introd a JDBC51

ResultSetResultSet