Vous êtes sur la page 1sur 30

Acceso a bases de datos SQL - JDBC

CAPITULO IV POR Lic Adrian Quisbert Vilela

Seccin de Datos

Cliente Cliente

DB

Base de Datos SQL


Indispensables en la mayora de las aplicaciones C/S Fabricantes mas importantes:
Oracle Sybase Informix IBM Microsoft

SQL
Structured Query Language
IBM a comienzos de los 70s Esta fuertemente basado en fundamentos matemtico de la teora de conjuntos y clculo predicativo (predicate calculus) SQL consiste de una lista pequea, pero muy flexible, de comandos que pueden ser utilizados para manipular informacin almacenada en tablas.

SQL
El modelo relacional separa claramente los aspectos fsicos de los datos de su representacin lgica. El modelo libera al programador de tareas complicadas. Creacin de rutinas de almacenaje, indexacin, y recuperacin de datos.

SQL
SQL es un lenguaje de consulta interactivo
SELECT nro, nombre FROM empleados

SQL es un lenguaje de programacin de base de datos. SQL es un lenguaje de definicin y administracin de datos.
CREATE TABLE empleados (nro NUMBER(6), nombre VARCHAR(30) )

SQL
SQL es utilizado para intercomunicarnos con BD remotas SQL ayuda a la proteccin de datos en un ambiente multiusuario e interconectado.
Validacin de datos Integridad referencial rollbacks locking automtico deteccin y resolucin de deadlocks

SQL-89, SQL-92, SQL3 SQL-89, SQL-92,


El primer estandard naci en 1986. En 1989 fue revisado y se introdujo lo que conocemos como integridad referencia.
SQL-89 o ANSI SQL

SQL-89, SQL-92, SQL3 SQL-89, SQL-92,


SQL-92 (ISO), tambin conocido SQL2 data del ao 1992. Es cinco veces mas extenso que le original SQL-89.
Estandariza muchos de los puntos que anteriormente se dejaba al criterio de los fabricantes. ISO: 3 niveles de acatamientos (compliance) :
Bsico (Entry), intermedio y completo (full)

SQL-89, SQL-92, SQL3 SQL-89, SQL-92,


SQL3: mas de 2,000 pginas. Consiste de nueve partes Aumenta un nmero elevado de caractersticas y funciones a un estandard SQL-92 que ya es complicado. No se estima que los fabricantes adopten este estndar inmediatamente.

Servicios de un DBS
Un Servidor de Base de Datos (tambin llamado SQL engine) provee un acceso seguro a datos compartidos. Es multiusuario, provee control de concurrencia, seguridad, recuperacin y consistencia. Mayor parte de ellos proveen como mnimo acatamiento a SQL-89.

Arquitecturas SQL
Un proceso por cliente
Provee a cada cliente una conexin propia y su propio lugar en memoria (seguridad) La base de datos corre en uno o mas procesos en segundo plano. Protege a los usuarios unos de otros, y protege al administrador de datos de los usuarios. Los procesos pueden ser fcilmente asignados a dif. procesadores en un equipo (SMP)

Arquitecturas SQL
Un proceso-por-cliente
Proceso Proceso

DB

Proceso

Servidor Ejemplos: Informix, DB2, Oracle V6.

Arquitecturas SQL
Multi-hebras de procesamientos (multithreaded)
Mejor rendimiento Todas la conexiones corren en un mismo espacio de memoria. No depende del sistema operativo para programacin y control multitareas. Problemas cuando un proceso cliente se comporta incorrectamente, afecta a todo el servidor.

Arquitecturas SQL
Multi-hebras de procesamientos (multithreaded)

DB
Proceso Multihebra

Servidor

Ejemplos: Sybase, SQL Server

Arquitecturas SQL
Arquitectura Hbrida
3 componentes
Proceso oyente multi-hebras que asigna clientes a los procesos despachantes. Procesos despachantes (insertan peticiones en una pila, reciben resultados y los envan a los clientes) Procesos servidores reusables compartidos que satisfacen a las peticiones que esperan en la pila.

Arquitecturas SQL
Arquitectura Hbrida
Servidor
Proceso Proceso Proceso
Request/ Response Queue

Proceso

DB

Proceso Listener Program


Shared Dispatcher Pool

Proceso
Shared Server Process Pool

Ejemplos: Oracle 7, Oracle 8

SQL Middleware

ODBC JDBC DB

ESQL

Acceso a Bases de Datos C/S


Embedded SQL (SQL incrustado)
Es un estndar ISOSQL-92 Se introducen comandos SQL en lenguajes de programacin (C, Cobol, Pascal, etc.) Se necesita de un precompilador que traduce los comandos SQL en lenguaje que el compilador pueda entender. Ejemplo: En C un comando SQL incrustado en el cdigo debe comenzar con la palabra clave:
EXEC SQL ;

Acceso a Bases de Datos C/S


Embedded SQL
El gran problema de este mtodo es que la base de datos a utilizarse tiene que ser conocida antes del desarrollo de la aplicacin. Difcil de utilizar diferentes bases de datos en tiempo de ejecucin. Los precompiladores estn cazados con una BD particular. Se tendr que recompilar la aplicacin para cada base de datos utilizada.

SQLJ - SQL incrustado en Java


1997 - Oracle, IBM, Tandem comenzaron la implementacin ESQL para Java llamado SQLJ.
SQLJ nos permite introducir comandos SQL en los programas Java. En muchas maneras es mas fcil utilizar que JDBC y tiene mejor soporte para su verificacin durante tiempo de compilacin. Es muy importante porque es utilizado para escribir stored procedures basados en Java.

SQL Call-Level Interface (CLI) Call-Level


Es un SQL API (Application Programming Interface)
No necesita ser pre-compilado. En teora se lo puede utilizar para crear aplicaciones portables. En la prctica las cosas no son tan simples

ODBC CLI de Microsoft


Ver. 3.5 (1998)
Es un interfaz de programacin que permite a las aplicaciones accesar a bases de datos utilizando SQL Cada proveedor de Bases de Datos aumentan extensiones propias al driver, lo que nuevamente nos conduce al problema de portabilidad.

CLIs orientados a Objetos


JDBC y OLE DB
Ambos proveen un CLI que se accesa mediante el uso de interfaces orientado a objetos (y classes) en reemplazo de APIs procedimentales.

JDBC (Java Database Connectivity)


100% java Permite escribir cdigo Java independientemente de la Base de Datos en uso.

JDBC
Al igual que ODBC, provee dos conjuntos de interfaces:
Interfaz de Aplicacin (para el clientes) Interfaz driverque los proveedores de RDMS deben adaptar a su base de datos particular. JDBC utiliza un manejador de drivers que automticamente carga el driver correcto para hablar con determinada BD.

JDBC
4 tipos de drivers
Tipo 1 JDBC-ODBC bridge
Utiliza ODBC (OK para FoxPro, Access, etc) No es aconsejable para aplicaciones grandes. Se pierde tiempo en comunicacin JDBC-ODBC. Funciones limitadas (dependientes de ODBC)

Tipo 2 Native-API Partly-Java Tipo 3 Net-Protocol All-Java Tipo 4 Native-Protocol All-Java

JDBC
ResultSet ResultSet Statement Statement ResultSet ResultSet Prepared Stat. Prepared Stat. ResultSet ResultSet Callable Stat. Callable Stat.

Aplicacin

Connection Connection
Driver Manager JDBC-ODBC Bridge

Oracle Driver

Sybase Driver
ODBC DRIVER

ORACLE

Sybase
ODBC DB

OLE DB y ADO
Aplicaciones y Herramientas

ActiveX Data Objects (ADO)


Interfaces OLE DB

Servicios
Interfaces OLE DB

Cursor Engine

Query Engine

...

OLAP Engine

Proveedores de Datos

Proveedores ODBC

Servidor de Archivos

Hojas de Clculo

Servidor de Directorios

Servidor OLAP

Datos SQL

Datos Archivos

Datos Hojas de Clculo

Datos de Directorio

Datos Multi-Dimensionales

JDBC en la prctica
Cargar un driver especifico:
Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);

Solicitamos al manejador de drivers la apertura de una conexin


Connection con = DriverManager.getConnection(jdbc:odbc:somedb, user, passwd);

JDBC en la prctica
Ejecutamos un comando SQL
Statement stmt = con.createStatement; ResultSet rs = stmt.executeQuery(select * from clientes);

Recuperamos datos
while(rs.next()) { String nombre = rs.getString(nomCliente); }

Vous aimerez peut-être aussi