Download JDBC - Tecnun

Document related concepts
no text concepts found
Transcript
Acceso a Bases de
Datos con Java
JDBC
01 de Abril de 2008
Fernando Alonso
Indice
• Sistemas de Gestión de la Información
– Modelo Relacional
• Introducción a SQL
• Conectividad
– ODBC / JDBC
• Controladores (Drivers) JDBC
• JDBC 3.0 API
• Empezando a trabajar con JDBC
Indice
• Sistemas de Gestión de la Información
– Modelo Relacional
• Introducción a SQL
• Conectividad
– ODBC / JDBC
• Controladores (Drivers) JDBC
• JDBC 3.0 API
• Empezando a trabajar con JDBC
Sistemas de Gestión de la Información
• Base de Datos
– Forma de almacenamiento de información
– Estructura y Datos
– Modelo Relacional
• Gestor de Base de Datos
– Aplicación para manipular bases de datos
– DBase, Access, Oracle, SQL Server, Derby,
MySQL, PostgreSQL, ...
• SQL – Structured Query Language
– Lenguaje estándar para crear, examinar y
manipular bases de datos relacionales
– Permite manipular bases de datos en diferentes
sistemas que soporten el estándar
Modelo Relacional (Tablas)
Campo,
Atributo,
Columna
Registro, Fila
Modelo Relacional (Relaciones)
Tabla
Clave
Relación
Indice
• Sistemas de Gestión de la Información
– Modelo Relacional
• Introducción a SQL
• Conectividad
– ODBC / JDBC
• Controladores (Drivers) JDBC
• JDBC 3.0 API
• Empezando a trabajar con JDBC
Introducción a SQL
• Recuperar información
SELECT [ALL | DISTINCT] <seleccion> FROM <tablas>
WHERE <condiciones de seleccion> [ORDER BY <columna> [ASC | DESC]
[,<columna> [ASC | DESC]]...]
• Almacenar información
INSERT INTO <nombre tabla>
[(<nombre columna> [,<nombre columna>]...)]
VALUES (<expresion> [,<expresion>]...)
• Eliminar datos
DELETE FROM <nombre tabla> WHERE <condicion busqueda>
• Actualizar datos
UPDATE <nombre tabla>
SET <nombre columna> = ( <expresion> | NULL )
[, <nombre columna> = ( <expresion> | NULL )]... WHERE <condicion busqueda>
SQL con ExecuteSQL
java ExecuteSQL prueba "Select * from Productos"
CREATE TABLE FIRSTTABLE (ID INT PRIMARY KEY,
NAME VARCHAR(12));
INSERT INTO FIRSTTABLE VALUES (10,'TEN');
INSERT INTO FIRSTTABLE VALUES (20,'TWENTY');
INSERT INTO FIRSTTABLE VALUES (30,'THIRTY');
SELECT * FROM FIRSTTABLE;
Indice
• Sistemas de Gestión de la Información
– Modelo Relacional
• Introducción a SQL
• Conectividad
– ODBC / JDBC
• Controladores (Drivers) JDBC
• JDBC 3.0 API
• Empezando a trabajar con JDBC
Conectividad - ODBC
• ODBC – Open DataBase Connectivity
– Interface de aplicaciones (API) para acceder a
datos en sistemas gestores de bases de datos
utilizando SQL
Aplicación Cliente
Data Source Name (DSN)
ODBC Driver Manager
ODBC Driver
ODBC Driver
ODBC Database
Conectividad - JDBC
• JDBC
– Marca registrada
– Java DataBase Connectivity
• API de Java para ejecutar sentencias SQL
• JDBC posibilita básicamente tres cosas:
– Establecer una conexión con una base de datos
desde Java
– Enviar sentencias SQL a través de dicha conexión
– Procesar los resultados
Indice
• Sistemas de Gestión de la Información
– Modelo Relacional
• Introducción a SQL
• Conectividad
– ODBC / JDBC
• Controladores (Drivers) JDBC
• JDBC 3.0 API
• Empezando a trabajar con JDBC
Controladores (Drivers) JDBC
Indice
• Sistemas de Gestión de la Información
– Modelo Relacional
• Introducción a SQL
• Conectividad
– ODBC / JDBC
• Controladores (Drivers) JDBC
• JDBC 3.0 API
• Empezando a trabajar con JDBC
JDBC 3.0 API
• La JDBC 3.0 API comprende 2 paquetes:
– java.sql
– javax.sql (añade capacidades de la parte servidor)
• Básicamente, los pasos a seguir son:
– Registrar un driver:
• Clase DriverManager
– Establecer una conexión con la base de datos:
• Interface Connection
– Enviar sentencias SQL a la base de datos:
• Interface Statement
– Procesar los resultados de las consultas
• Interface ResultSet
Utilización de JDBC 3.0 API
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = ″jdbc:odbc:wombat″;
Connection con = DriverManager.getConnection(url);
Statement stmt = con.createStatement();
ResultSet rs =
stmt.executeQuery(″SELECT a, b, c FROM Table2″);
While(rs.next()){
int i = rs.getInt(a);
String s = rs.getString(b);
Float f = rs.getFloat(c);
System.out.println(ROW=  + i +   + s +   + f);
}
JDBC 3.0 API
Connection
createStatement
prepareStatement
subclasses
Statement
prepareCall
subclasses
PreparedStatement
CallableStatement
Data Types
executeQuery
executeQuery
executeQuery
getXXX
ResultSet
getMoreResults
getResultSet
Indice
• Sistemas de Gestión de la Información
– Modelo Relacional
• Introducción a SQL
• Conectividad
– ODBC / JDBC
• Controladores (Drivers) JDBC
• JDBC 3.0 API
• Empezando a trabajar con JDBC
Empezando a trabajar con JDBC
• Base de datos en formato Access
– Base de Datos: Libros.mdb
– Tabla: Datos
– Campos: Codigo, Titulo, Autor
• Creación de un Data Source Name (DSN)
• Ejemplo de aplicación JDBC simple
• Ejemplo con excepciones y MetaData
Derby: base de datos en Java
• Cloudscape de IBM es el proyecto Derby en
Apache
• Instalación
– Directorio javadb
• set DERBY_HOME=Q:\Java\javadb
• set PATH=%DERBY_HOME%\bin;%PATH%
• Ejemplo de base de datos
– %DERBY_HOME%\demo\programs\toursdb\*.sql
• Aplicación de utilidad: ij
– Set classpath=%DERBY_HOME%\lib\derby.jar
SQL con Derby
• Ejemplo de utilización con ij:
>IJ
ij version 10.3
ij> CONNECT 'jdbc:derby:firstdb;create=true';
ij> CREATE TABLE FIRSTTABLE
(ID INT PRIMARY KEY,
NAME VARCHAR(12));
0 rows inserted/updated/deleted
ij> INSERT INTO FIRSTTABLE VALUES
(10,'TEN'),(20,'TWENTY'),(30,'THIRTY');
3 rows inserted/updated/deleted
ij> SELECT * FROM FIRSTTABLE;
ID
|NAME
-----------------------10
|TEN
20
|TWENTY
30
|THIRTY
3 rows selected
ij>run 'ToursDB_schema.sql';
ij>run 'loadTables.sql';
Acceso a Bases de
Datos con Java
JDBC
01 de Abril de 2008
Fernando Alonso