Fernando Alonso Nicolás Serrano Acceso a Bases de Datos con Java JDBC 01 de Abril de 2008.

23
Fernando Alonso Nicolás Serrano Acceso a Bases de Datos con Java JDBC 01 de Abril de 2008

Transcript of Fernando Alonso Nicolás Serrano Acceso a Bases de Datos con Java JDBC 01 de Abril de 2008.

Fernando Alonso Nicolás Serrano

Acceso a Bases de Datos con

Java

JDBC01 de Abril de 2008

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

Relación

Clave

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ónSELECT [ALL | DISTINCT] <seleccion> FROM <tablas> WHERE <condiciones de seleccion> [ORDER BY <columna> [ASC | DESC][,<columna> [ASC | DESC]]...]

• Almacenar informaciónINSERT INTO <nombre tabla> [(<nombre columna> [,<nombre columna>]...)] VALUES (<expresion> [,<expresion>]...)

• Eliminar datosDELETE FROM <nombre tabla> WHERE <condicion busqueda>

• Actualizar datosUPDATE <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

ODBC Driver Manager

ODBC Driver

ODBC Database

Data Source Name (DSN)

ODBC Driver

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

subclassessubclasses

Connection

CallableStatementPreparedStatementStatement

ResultSet

Data Types

createStatement prepareStatement prepareCall

executeQuery

executeQuery executeQuery

getXXX getMoreResultsgetResultSet

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:>IJij version 10.3ij> CONNECT 'jdbc:derby:firstdb;create=true';ij> CREATE TABLE FIRSTTABLE (ID INT PRIMARY KEY, NAME VARCHAR(12));0 rows inserted/updated/deletedij> INSERT INTO FIRSTTABLE VALUES (10,'TEN'),(20,'TWENTY'),(30,'THIRTY');3 rows inserted/updated/deletedij> SELECT * FROM FIRSTTABLE;ID |NAME------------------------10 |TEN20 |TWENTY30 |THIRTY3 rows selectedij>run 'ToursDB_schema.sql';ij>run 'loadTables.sql';

Fernando Alonso Nicolás Serrano

Acceso a Bases de Datos con

Java

JDBC01 de Abril de 2008