Documente Academic
Documente Profesional
Documente Cultură
17-
17-1
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez
Objetivos
•Usar JDBC para conectar y ejecutar comandos SQL desde una aplicación Java sobre una
base de datos
•Explorar el API JDBC de conexión a base de datos.
•Comprender los pasos para el desarrollo de aplicaciones con acceso a bases de datos.
•Entender las diferentes categorías de drivers JDBC y poder distinguir la solución
apropiada para casos particulares.
•Lograr controlar la ejecución de consultas y la extracción de datos.
•Poder construir aplicaciones ligeras que accedan a procedimientos almacenados y
ejecuten consultas dinámicas.
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-1
Professional Java Developer Escuela de Postgrado y Estudios Continuos
• JDBC es una API estándar que implementa la estrategia universal de acceso a datos
de JAVA.
• La API JDBC provee acceso a bases de datos relacionales (RDBMS), así como a
fuentes de datos tabulares (planillas de cálculo). El único requerimiento es disponer
del driver JDBC apropiado.
• La API JDBC es una parte integral de la plataforma Java. Desde J2SE 1.4/J2EE 1.4.
se incluye JDBC 3.0.
Llamados Comandos de
JDBC base de datos
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez 17-
17-2
El paquete java.sql contiene el conjunto de interfaces que define el API JDBC. Este
paquete es parte de J2SE.
La API JDBC provee una interface de programación única, que independiza a las
aplicaciones del motor de base de datos usado. Incluye manejo de conexiones a base de
datos, ejecución de sentencias SQL, store procedures, soporte de transacciones, etc.
El driver JDBC es usado por la JVM para traducir las invocaciones JDBC genéricas en
invocaciones que la base de datos propietaria entiende. Los drivers son clases Java que se
cargan en ejecución.
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-2
Professional Java Developer Escuela de Postgrado y Estudios Continuos
El API JDBC
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez 17-
17-3
El API JDBC
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-3
Professional Java Developer Escuela de Postgrado y Estudios Continuos
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez 17-
17-4
Este tipo de driver usa el driver ODBC específico para la base de datos que se desea
acceder.
Desventajas
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-4
Professional Java Developer Escuela de Postgrado y Estudios Continuos
• La aplicación Java hace una invocación a la base de datos a través del driver JBDC,
el driver traduce el requerimiento, en invocaciones a la API del fabricante de la base
de datos. A través de este cliente nativo fluyen los requerimientos a la DB.
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez 17-
17-5
Este tipo de driver utiliza Java para hacer llamadas al API de acceso (protocolo) del DBMS
que debe estar disponible en el cliente. Este último es quien provee la conectividad y
acceso a la base de datos.
Por ejemplo IBM, provee el Client Application Enabler (CAE) para acceder al motor
relacional DB2 UDB.
Desventajas
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-5
Professional Java Developer Escuela de Postgrado y Estudios Continuos
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez 17-
17-6
Este tipo de driver utiliza los protocolos de red que vienen con el JDK (kit de desarrollo de Java) para
conectarse a un servidor. En este último se traducen los requerimientos a transacciones específicas
del DBMS.
Esta forma no requiere la existencia de código ejecutable en el lado del cliente, pero implica la
necesidad de un componente middleware para procesar las transacciones específicas.
Todas las funciones que no son especificadas en Java son de responsabilidad del middleware.
El protocolo genérico de red es flexible pues no requiere código instalado en el cliente, es así que
con el mismo driver puede accederse a diferentes bases de datos (un ambiente heterogéneo).
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-6
Professional Java Developer Escuela de Postgrado y Estudios Continuos
• Son altamente portables. Una vez compilados pueden usarse en cualquier sistema.
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez 17-
17-7
Este tipo de driver está enteramente escrito en Java y se comunica directamente a la Base
de datos con el protocolo de red del DBMS.
La mayoría de los fabricantes de Base de Datos proveen drivers JDBC de tipo 4 para sus
Bases de Datos.
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-7
Professional Java Developer Escuela de Postgrado y Estudios Continuos
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez 17-
17-8
Una Aplicación Java puede establecer una conexión a una Base de Datos, por medio de:
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-8
Professional Java Developer Escuela de Postgrado y Estudios Continuos
Obtener
Obtener
DriverManager.getConnection(url,user,pwd); 2
la
la Conexión
Conexión
conn.createStatement();
conn.prepareStatement(sql); Crear
Crear
3
el
el Comando
Comando
conn.prepareCall(sql);
stmt.executeQuery(); Ejecutar
Ejecutar
4
stmt.executeUpdate(); el
el Comando
Comando
(select)
stmt.close();
Liberar
Liberar Recursos
Recursos 5
conn.close();
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez 17-
17-9
2. Obtener la Conexión
Se obtiene una instancia de tipo java.sql.Connection mediante el DriverManager
3. Crear el Comando
Desde una instancia de Connection se pueden crear:
- Comandos Estáticos (java.sql.Statement)
- Comandos Dinámicos (java.sql.PreparedStatement)
- Llamadas a Procedimientos Almacenados (java.sql.CallableStatement)
4. Ejecutar el Comando
Existen dos modos básicos de ejecución de comando
- executeQuery para comandos Select
- executeUpdate para comando DDL y DML de actualización
4.1 Procesar los Resultados
Sólo en caso de la ejecución de una consulta de selección, los resultados son
manipulados a través de una instancia de java.sql.ResultSet, el cual brinda
soporte para recorrido sobre registros.
5. Liberar Recursos
La llamada al método close() de una conexión o de un comando, marca las
instancias para su eliminación de memoria por el Recolector de basura.
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-9
Professional Java Developer Escuela de Postgrado y Estudios Continuos
La clase java.sql.DriverManager
• DriverManager es una clase (no una interface) que viene con la API, con lo
cual, un proveedor de bd no puede optimizar esta clase.
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez 17-
17-10
La clase java.sql.DriverManager
Características
java.sql.Driver
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-10
Professional Java Developer Escuela de Postgrado y Estudios Continuos
1. Class.forName(“NOMBRE_DRIVER”);
2. DriverManager.registerDriver(INSTANCIA_DEL_DRIVER);
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez 17-
17-11
1.El método forName se utiliza para cargar clases por reflexión, de forma indirecta
3. Usando las opciones de la Máquina Virtual de Java, Permite Cambiar de driver sin
recompilar
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-11
Professional Java Developer Escuela de Postgrado y Estudios Continuos
2. Obtener la Conexión
• Una base de datos en JDBC es identificada por una URL (Uniform Resource
Locator). Especifica el nombre y la ubicación de la BD. La sintáxis recomendada
para la URL JDBC es la siguiente:
jdbc:<subprotocolo>:<subnombre>
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez 17-
17-12
Estableciendo una Conexión
java.sql.Connection
Puntero a la base de datos que proporciona el contexto de trabajo para los objetos
Statement y ResultSet. Soporta propiedades de transacción: setAutoCommit, commit y
rollback
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-12
Professional Java Developer Escuela de Postgrado y Estudios Continuos
• java.sql.PeparedStatement
– se utiliza el método prepareStatement de una instancia Connection para su creación.
– Extiende Statement para añadir sentencias precompiladas SQL, que compila la sentencia
SQL la primera vez. estas son llamadas más de una vez en el programa.
– Soporta parámetros de entrada: setInt, setFloat, setLong, setString
• java.sql.CallableStatement
– se utiliza el método prepareCall de una instancia Connection para su creación.
– Extiende la funcionalidad de PreparedStatement, permite la invocación de procedimientos
almacenados, si el manejador los soporta.
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez 17-
17-13
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-13
Professional Java Developer Escuela de Postgrado y Estudios Continuos
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-14
Professional Java Developer Escuela de Postgrado y Estudios Continuos
java.sql.ResultSet
– Contiene los datos resultado de una sentencia SQL que
se recuperan secuencialmente en filas
– El método next() sirve para avanzar una fila
– Se puede acceder a los datos de las columnas en
cualquier orden por índice de posición o nombre del
campo
– Provee métodos para recuperar los datos de un campo:
getString, getFloat, getInt, etc.
– El método wasNull() indica si el campo contiene valores
nulos.
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez 17-
17-15
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-15
Professional Java Developer Escuela de Postgrado y Estudios Continuos
BIGINT getLong()
BINARY getBytes()
BIT getBoolean()
CHAR getString()
DATE getDate()
DECIMAL getBigDecimal()
DOUBLE getDouble()
FLOAT getDouble()
INTEGER getInt()
LONGVARBINARY getBytes()
LONGVARCHAR getString()
NUMERIC getBigDecimal()
OTHER getObject()
REAL getFloat()
SMALLINT getShort()
TIME getTime()
TIMESTAMP getTimestamp()
TINYINT getByte()
VARBINARY getBytes()
VARCHAR getString()
ARRAY getArray()
BLOB getBlob()
CLOB getClob()
DISTINCT getUnderlyingType()
REF getRef()
STRUCT (castToStruct)getObject()
(castToObjectType)getObject(
JAVA_OBJECT )
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-16
Professional Java Developer Escuela de Postgrado y Estudios Continuos
5. Liberar Recursos
• Las clases:
– Connection
– Statement, PreparedStatement,CallableStatement
– ResultSet
proveen el método close(), que activa la realización de la
instancia específica, que liberan todos los recursos JDBC que
se ejecutan sobre el servidor de datos.
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez 17-
17-17
5. Liberar Recursos
Cuando una Excepción es lanzada los recursos pueden estar ya creados, por tanto, se
pueden escribir el siguiente código, para asegurarnos de liberar siempre los recursos
utilizados:
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-17
Professional Java Developer Escuela de Postgrado y Estudios Continuos
Resumen
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez 17-
17-18
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-18
Professional Java Developer Escuela de Postgrado y Estudios Continuos
Práctica
Objetivo
Copyright © 2005, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martí
Martínez 17-
17-19
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-19
Professional Java Developer Escuela de Postgrado y Estudios Continuos
Objetivo
• Implementar una aplicación en Java que maneje la persistencia de datos sobre una
base de datos relacional
Ejercicio
1. Del esquema mostrado (tablas vs. clases) implementar las clases que implementen el
acceso a datos para el caso de Gestión Académica.
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-20
Professional Java Developer Escuela de Postgrado y Estudios Continuos
Recuperació
Recuperación y actualizació
actualización de datos con JDBC 17-
17-21