Está en la página 1de 31

Java con Bases de Datos

Java con Bases de Datos


2

Requisitos previos
Requisitos previos
Conocimientos de programacin avanzada en Java Conocimientos de programacin avanzada en Java
Modelado de datos Modelado de datos
SQL SQL

Objetivos
Objetivos
Introduccin al acceso a bases de datos desde Introduccin al acceso a bases de datos desde
aplicaciones con Java Data Base aplicaciones con Java Data Base Connectivity Connectivity (JDBC) (JDBC)

Dirigido a
Dirigido a
Programadores y Analistas/Programadores que deseen Programadores y Analistas/Programadores que deseen
desarrollar aplicaciones para Internet con acceso a desarrollar aplicaciones para Internet con acceso a
bases de datos bases de datos
Java con bases de datos
Java con bases de datos
3

Introduccin
Introduccin

El estndar JDBC
El estndar JDBC

Ejemplo con JDBC


Ejemplo con JDBC

Clases de JDBC
Clases de JDBC

API JDBC 2.0


API JDBC 2.0
Contenidos
Contenidos
4
Introduccin
Introduccin
Tecnologa de acceso a bases de datos
Tecnologa de acceso a bases de datos
Entusiasmo inicial de la tecnologa Java como plataforma
cliente/servidor y computacin en Web
Desarrolladores de bases de datos (Oracle, Informix)
pretenden que los applet accedan a sus bases de datos a travs
de redes con tecnologa Internet
En la conferencia JavaOne (mayo 1996) Sun anuncia nuevos
APIs Enterprise dirigidos a aplicaciones cliente/servidor
JDBC (Java DataBase Conectivity) para acceso a bases de datos
JVM incorpora un gestor especfico para cada tipo de SGBD
Se apoya en la especificacin y filosofa de ODBC: JDBC ODBC
5
Introduccin
Introduccin
Acceso a bases de datos desde Java
Acceso a bases de datos desde Java
API Java Enterprise
JDBC
Mtodos especficos proporcionados
por los desarrolladores de cada base
de datos
Mtodos desarrollados por terceras
compaas
6
El estndar JDBC
El estndar JDBC
JDBC como API Enterprise
Conjunto de clases de acceso a bases de datos
relacionales
Desarrollo de aplicaciones cliente/servidor dirigidas a
empresa mediante objetos Java, applets y servlets
Sistemas de facturacin
Reserva de billetes de avin
Catlogos
Marketing
Sistemas basados en una arquitectura de tres niveles
Base de datos
Lgica de la aplicacin
Interfaz de usuario
7
El estndar JDBC
El estndar JDBC
Caractersticas
Caractersticas
Es parte de Java 1.1
Independiente de la plataforma
Independiente de la base de datos
Modelado en base a ODBC
Disminuye la curva de aprendizaje por su amplia
utilizacin
Existen implementaciones eficaces de ODBC en casi
todas las plataformas y para casi todas las bases de
datos
Se basa en abstracciones comunes
La conexin: conexion
El conjunto de resultados: ResultSet
8
El estndar JDBC
El estndar JDBC
Ventajas derivadas de JDBC:ODBC
Facilita la comunicacin de la aplicacin con
distintos SGBDs.
Proporciona una serie de funciones para la
manipulacin de datos (insercin, borrado y
modificacin), consultas, vistas y llamadas a
procedimientos.
Presenta una arquitectura de cuatro niveles:
Aplicacin
Administrador de orgenes de datos.
Controlador/es ODBC
Orgenes de datos
9
El estndar JDBC
El estndar JDBC
ODBC
Open DataBase Conectivity
A P L I C A C I N
A d m in is t r a d o r d e o r g n e s d e d a t o s
C o n t r o la d o r
O D B C
C o n t r o la d o r
O D B C
C o n t r o la d o r
O D B C
O r ig e n d e
d a t o s
O r ig e n d e
d a t o s
O r ig e n d e
d a t o s
A R Q U I T E C T U R A O D B C
10
El estndar JDBC
El estndar JDBC
Configuracin JDBC:ODBC
11
El estndar JDBC
El estndar JDBC
Configuracin JDBC:ODBC
12
El estndar JDBC
El estndar JDBC
Configuracin JDBC:ODBC
13
El estndar JDBC
El estndar JDBC
Configuracin JDBC:ODBC
14
El estndar JDBC
El estndar JDBC
Configuracin JDBC:ODBC
15
El estndar JDBC
El estndar JDBC
Configuracin JDBC:ODBC
16
El estndar JDBC
El estndar JDBC
Configuracin JDBC:ODBC
17
El estndar JDBC
El estndar JDBC
Implementacin
Paquete java.sql
Los programas deben declarar el uso de este
paquete
import java.sql.*
El Gestor JDBC
Para una base de datos concreta
Oracle
Borland
Genrico para varias bases de datos
JDBC:ODBC
Se traducen las llamadas JDBC en llamadas
ODBC
Ejemplo de
implementacin de
una firma de
bases de datos
Implementacin
de Sun del ODBC
fichero .class
API JDBC
Gestor de JDBC
Puente
JDBC a ODBC
Gestor ODBC
Sistema Operativo
fichero .class
API JDBC
Gestor de JDBC
de la firma de la
base de datos
Sistema Operativo
Internet/intranet
Servidor de
Base de Datos
Base
de
Datos
Applet / Aplicacin
Mquina Virtual Java
SO husped / Hardware
19
El estndar JDBC
El estndar JDBC
Esquema de clases
Mecanismo:
Establecer conexin
Crear sentencia
Ejecutar sentencia
Procesar resultados
Finalizar sentencia
Cerrar conexin
Gestor de
base de datos
Conexin
Conexin Conexin
Sentencia
Sentencia
Sentencia
Invocable
Sentencia
Preparada
executeUpdate()
executeQuery()
execute() getMoreResults()
getResultSet()
Resultset
Metadatos
Datos
getConnection()
prepareCall() createStatement() prepareStatement()
20
TIPO Clase JDBC
Implementacin
java.sql.Driver
java.sql.DriverManager
java.sql.DriverPropertyInfo
Conexin a base de datos java.sql.Connection
Sentencias SQL
java.sql.Statement
java.sql.PreparedStatement
java.sql.CallableStatement
Datos java.sql.ResulSet
Errores java.sql.SQLException
java.sql.SQLWarning
El estndar JDBC
El estndar JDBC
Tipos de Clases
21
Ejemplo con JDBC
Ejemplo con JDBC
Consulta de datos
import java.sql.*;
......
final String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
final String BBDD = "jdbc:odbc:ARTICULOS";
try {
Class.forName(DRIVER);
Connection conexion = DriverManager.getConnection(BBDD);
PreparedStatement select = conexion.prepareStatement(
SELECT * FROM articulos ORDER BY Titulo);
ResultSet r = select.executeQuery();
while (resultado.next()) {
System.out.println(resultado.getString("Titulo"));
}
resultado.close(); select.close(); conexion.close();
} catch (Exception e) {
System.out.println("Error: " + e);
}
Driver
Driver
Conexin
Conexin
SQL
SQL
Acceso a
los campos
Acceso a
los campos
22
Ejemplo con JDBC
Ejemplo con JDBC
Consulta de datos con condicin
import java.sql.*;
final String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
final String BBDD = "jdbc:odbc:ARTICULOS";
try {
Class.forName(DRIVER);
Connection conexion = DriverManager.getConnection(BBDD);
PreparedStatement select = conexion.prepareStatement(
"SELECT * FROM articulos WHERE Titulo=?");
select.setString(1,miTitulo.getText());
ResultSet resultado = select.executeQuery();
while (resultado.next()) {
lista.addItem(resultado.getString("Titulo"));
}
resultado.close(); select.close(); conexion.close();
} catch (Exception e) {
System.out.println("Error: " + e);
}
23
Ejemplo con JDBC
Ejemplo con JDBC
Insercin de datos
import java.sql.*;
final String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
final String BBDD = "jdbc:odbc:ARTICULOS";
try {
Class.forName(DRIVER);
Connection conexion = DriverManager.getConnection(BBDD);
PreparedStatement insert = conexion.prepareStatement(
INSERT INTO articulos VALUES (?,?,?)");
insert.setString(1,miTitulo);
insert.setString(2,miCodigo);
insert.setString(3,miTema);
int resultado = insert.executeUpdate();
insert.close(); conexion.close();
} catch (Exception e) {
System.out.println("Error: " + e);
}
24
Clases de JDBC
Clases de JDBC
java.sql.DriverManager
Lleva el control de los gestores JDBC disponibles
Es posible que existan varios dentro del sistema
Por defecto, carga todos los disponibles en sql.drivers
El gestor cargado debera registrarse con el mtodo
registerDriver
Sintaxis utilizada: URLs
jdbc:<subprotocolo>:<parmetros>
jdbc:odbc:NOTICIAS:UID=Sistema;PWD=SistemaPW
Seguridad
Hay que tener presente el modelo de seguridad
final String BBDD = "jdbc:odbc:ARTICULOS";
Connection conexion =
DriverManager.getConnection(BBDD);
25
Clases de JDBC
Clases de JDBC
java.sql.Driver
Gestor de informacin y configuracin general
Se carga durante la inicializacin
mediante
DriverManager.registerDriver
Class.forName
Se le pedir informacin a lo largo del programa
Residir en memoria
Mtodos:
connect
getPropertyInfo
final String DRIVER ="sun.jdbc.odbc.JdbcOdbcDriver";
Class.forName(DRIVER);
26
Clases de JDBC
Clases de JDBC
java.sql.Connection
Puntero a la base de datos
Proporciona el contexto de trabajo para los
objetos Statement y ResultSet
Soporta propiedades de transaccin
setAutoCommit
commit
rollback
Connection conexion =
DriverManager.getConnection(BBDD);
27
Clases de JDBC
Clases de JDBC
java.sql.Statement
Ejecucin de una sentencia SQL
executeQuery
Sentencias SELECT
devuelve un ResultSet
executeUpdate
Sentencias INSERT, DELETE, UPDATE, CREATE
Devuelve un entero
execute
Sentencias desconocidas en tiempo de compilacin o
sentencias que devuelven resultados complejos
Devuelve true/false
Statement select = conexion.createStatement();
ResultSet resultado =
select.executeQuery(SELECT * FROM ACTIVIDAD);
28
Clases de JDBC
Clases de JDBC
java.sql.PreparedStatement
Extiende Statement para aadir sentencias
precompiladas SQL
Compila la sentencia SQL la primera vez
Sentencias que son llamadas ms de una vez en el
programa
Soporta parmetros de entrada
setInt, setFloat, setLong, setString
PreparedStatement select = conexion.prepareStatement(
"SELECT * FROM articulos WHERE Titulo=?");
select.setString(1,Mi titulo);
ResultSet resultado = select.executeQuery();
29
Clases de JDBC
Clases de JDBC
java.sql.ResultSet
Contiene los datos resultado de una sentencia SQL
Se recuperan secuencialmente en filas
next sirve para avanzar una fila
Se puede acceder a los datos de las columnas en cualquier
orden
ndice de posicin
nombre del campo
Mtodos: getString, getFloat, getInt, etc.
Mtodo wasNull()
PreparedStatement select = conexion.prepareStatement(
"SELECT * FROM articulos WHERE Titulo=?");
select.setString(1,Mi titulo);
ResultSet resultado = select.executeQuery();
while (resultado.next())
System.out.println(resultado.getString("Titulo"));
30
Ejemplo con JDBC
Ejemplo con JDBC
Programa para trabajar con MySQL
import java.sql.*;
final String DRIVER = "org.gjt.mm.mysql.Driver";
final String BBDD = "jdbc:mysql://chico.inf-cr.uclm.es/articulos";
try {
Class.forName(DRIVER);
Connection conexion = DriverManager.getConnection(BBDD);
Statement insert = conexion.prepareStatement(
INSERT INTO articulos VALUES (?,?,?)");
insert.setString(1,miTitulo);
insert.setString(2,miCodigo);
insert.setString(3,miTema);
int resultado = insert.executeUpdate();
insert.close(); conexion.close();
} catch (Exception e) {
System.out.println("Error: " + e);
}
31
API JDBC 2.0
API JDBC 2.0
Caractersticas
Requerimientos
Versin 1.2 o superior de JDK
Driver con soporte para JDBC 2.0
DBMS que implemente caractersticas de JDBC 2.0
Aportaciones
Ampliacin de la interfaz ResultSet
Movimiento a cualquier posicin y direccin
Realizacin de modificaciones en los datos a travs del
ResultSet (sin SQL)
Soporte para ejecucin Batch de sentencias
Nuevos tipos de datos correspondientes a SQL3

También podría gustarte