JDBC

 

Felipe Fernández
Yerko Muñoz

Qué es JDBC?

JDBC es usado para enviar comandos SQL hacia una base de datos relacional, que puede ser Oracle, Infomix, SyBase, etc.

Qué hace JDBC?
Establece una conexión con una BD
Envía sentencias SQL
Procesa los resultados

Connection con = DriverManager.getConnection ( "jdbc:odbc:wombat", "login", "password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) { int x = rs.getInt("a"); String s = rs.getString("b"); float f = rs.getFloat("c"); }

JDBC es una API de bajo nivel para API´s de alto nivel

Una integración de SQL hacia Java, es decir que las sentencias SQL se puedan mezclar con Java, por ejemplo, que una variable de Java pueda ser usada en una sentencia SQL para recibir o dar valores.

Un mapeo directo de las tablas de la BD hacia las clases de Java, donde cala fila de la tabla se convierte en una instancia de la clase, y donde cada columna se corresponde a un atrubuto de esa instancia.

JDBC v/s ODBC y otras API´s
ODBC no es apropiado para usar directamente con Java por que usa una interfaz en C.
Una traducción literal de la API ODBC en C, no es deseable. Por ejemplo Java no tiene punteros y la ODBC hace gran uso de ellos.
ODBC es muy difícil de aprender , hace una mezcla de acciones simples y avanzadas.
Una API como JDBC es necesario para poder desarrollar una solución “puramente de Java”

 

Modelos de dos capas y tres capas

Conformación de SQL
El SQL es el idioma normal por acceder las bases de datos correlativas. Una dificultad es que aunque la mayoría del DBMSs (los Sistemas de Dirección de Base de datos) use un formulario normal de SQL para la funcionalidad básica, ellos no conforman la sintaxis de SQL normal más recientemente definida para la funcionalidad más avanzada. Por ejemplo no todas las BD soportar procedimientos almacenados.

Una manera que el API de JDBC trata de este problema es permitir cualquier sentencia sea pasada a un driver de DBMS subyacente.

Para las aplicaciones complejas, JDBC trata la conformación de SQL de otra manera. Proporciona la información descriptiva sobre el DBMS por medio del DatabaseMetaData para que las aplicaciones puedan adaptar a los requisitos y capacidades de cada DBMS.

El Armazón de JDBC
JavaSoft proporciona tres componentes JDBC como la parte de la JDK:
el JDBC driver manager,
la JDBC driver test suite
el puente JDBC-ODBC.
El JDBC driver manager es el espinazo de la arquitectura de JDBC. Realmente es bastante pequeño y simple; su función primaria es conectar las aplicaciones de Java al chófer de JDBC correcto y entonces salir de la manera.

La JDBC driver test suite proporciona un poco de confianza en que drivers de JDBC ejecutarán su programa. Pueden designarse sólo drivers que pasan la JDBC driver test suite

El Armazón de JDBC
El puente de JDBC-ODBC les permite a los drivers de ODBC ser usado como drivers de JDBC. Y a largo plazo proporcionará una manera de acceder alguno del DBMSs menos popular si no se crean los drivers de JDBC para ellos.

PC


Ejemplos JDBC ( Lado Cliente )

Se asume que se tiene instalado una DBMS Oracle 8i (versión 8.1.6) y que se puede conectar usando el driver de JDBC.
Brevemente estos ejemplos muestran cómo conectarse a la Base de Datos y usar sentencias SQL simples como "select", "insert", "update" y "delete".


Algunos ejemplos simples:

driver_ver.java Despliega la versión del driver.
driver_check.java Chequea si corren los drivers correctamente.

tab_sel.java Select a una tabla.
tab_upd.java Modifica registros en una tabla.
tab_del.java Borra registros de una tabla.
tab_ins.java Inserta registros hacia una tabla.
tabprep_upd.java Como usar una sentencia de preparación con un "update".

Otros ejemplos:

call_sp.java Llamado a un procedimiento de Oracle.
call_sf.java Llama a una función de Oracle.
excep_1.java Manejo de excepciones (1).
excep_2.java Manejo de excepciones (2).
meta_data1.java Meta-datos. Cómo manejar un "select *".
meta_data2.java Más métodos con meta-datos , cómo obtener los nombres de los campos.
meta_data3.java Más métodos con meta-datos (*).
meta_data4.java Detalles sobre las palabras claves no estándares de la BD.
meta_data5.java Cómo encontrar el largo máximo de un nombre de un campo.
meta_data6.java Tipos de tablas permitidos.
tab_preupdtran.java Cómo setear una transacción.
tab_preupdrb.java Cómo ejecutar un "rollback".