Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introducción
El acceso a las bases de datos es para muchos desarrolladores, una parte esencial de las
herramientas de desarrollo de software. Para los programadores novatos en Java es fundamental
comprender como las aplicaciones en Java pueden ser conectadas a una base de datos. En este
documento se mostrará como aprender a utilizar la interfaz JDBC, la cual es la herramienta que
permite que Java dialogue con las bases de datos. JDBC fue diseñado para hacer simple la
operación de las bases de datos. Sólo basta conocer las instrucciones SQL para realizar consultas
y actualizaciones a las bases de datos.
La forma como la información de una tabla está relacionada con la información de otra tabla se
llamada relación. Por ejemplo, los candidatos tienen una relación uno a varios con las votaciones
ya que un candidato puede tener varias votaciones (correspondientes a las distintas zonas de
votación) y una votación corresponde a un solo candidato. Igual sucede con la relación entre zonas
de votación y las votaciones.
En resumen, el modelo de datos relacional representa una base de datos como un conjunto de
tablas y unas relaciones entre las tablas.
Para el ejemplo de este documento, se utilizará un modelo relacional para almacenar información
sobre unas elecciones:
En esta ilustración, cada rectángulo representa la estructura de una tabla con su nombre en la
parte superior y la lista de campos abajo. En negrilla aparecen los campos correspondientes la
Llave primaria, es decir, los campos que identifican cada registro en la tabla. Entre las tablas se
aprecian unas líneas correspondientes a las relaciones, las cuales representan la dependencia que
se da entre las tablas y que tienen asociada una cardinalidad:
Esta base de datos debe ser implementada en un DBMS como lo puede ser SQL Server, Oracle,
Paradox, Informix, o Access.
En nuestro caso utilizaremos el motor de base de datos Microsoft Jet (el cual corresponde al DBMS
Microsoft Access), que almacena la respectiva base de datos en archivos con extensión .mdb (el
nombre de la base de datos sería Elecciones.mdb). El aspecto que tendría en la ventana
Relaciones, sería el siguiente:
Se puede observar que es muy similar al diagrama relacional de la parte superior, lo que ilustra
cuanto se aproximan las herramientas de software hoy en día a los diseños.
Java utiliza la interfaz JDBC (Open Database Conectivity) para comunicarse con las Bases de
Datos y tiene la misma función que el ODBC la tiene para Windows. JDBC, está compuesto por un
número determinado de clases que permiten a cualquier programa escrito en Java acceder a una
base de datos.
Java puede acceder a la base de datos mediante un driver o controlador JDBC apropiado que
pueda utilizar las clases que permiten el acceso a la base de datos.
Uno de los controladores para acceder bases de datos es el Puente JDBC-ODBC el cual tiene las
siguientes características:
1Utiliza la estandarización ODBC para su funcionamiento que es el que poseen la mayoría de
los SGBD.
2Convierte todas las llamadas de JDBC a ODBC realizando el proceso inverso para la
obtención de resultados.
3Su principal inconveniente radica en que al realizar una llamada de JDBC a ODBC, éste
último debe realizar una llamada a la librería nativa del fabricante del SGBD, disminuyendo
claramente la velocidad del controlador
4Al utilizar ODBC como puente se crea una doble capa, y a su vez creamos una aplicación
dependiente de la plataforma, ya que ODBC está definido para Windows.
Sun Microsystems incluye el controlador en el JDK para popularizar el JDBC mediante el ODBC.
Una vez dentro del administrador de fuentes de datos ODBC, se podrá configurar un nuevo origen
de datos o modificar uno previamente existente.
Los controladores (Drivers) ODBC son intermediarios capaces de convertir la sintaxis SQL a los
formatos requeridos por cada uno de los motores de bases de datos.
Cuando se define una fuente de datos ODBC se debe suministrar cierta información clave que
permita al controlador ODBC acceder a la fuente de datos. En todos los casos, lo primero que se
debe proporcionar es el controlador.
Por ejemplo para una base de datos hecha en Microsoft Access elegimos el respectivo
controlador.
A continuación se debe proporcionar un nombre. Este nombre lo utilizan los programas para
acceder al origen de datos a través del ODBC. A este origen de datos lo llamaremos
dsnElecciones.
Una vez se haya proporcionado la información requerida, se podrá cerrar el cuadro de diálogo y, a
partir de ese momento, el origen de datos estará listo para su empleo.
Funcionamiento de JDBC
La arquitectura de JDBC está basada en un conjunto de interfaces y clases de Java que permiten
conectarse con bases de datos, crear y ejecutar sentencias SQL , recuperar y modificar datos de
una base de datos.
Todo el trabajo con el JDBC comienza con la clase DriveManager, que es la que establece las
conexiones con las fuentes de datos, mediante los drivers o controladores JDBC.
Los drivers de bases de datos JDBC se definen mediante clases que implementan la interfaz
Driver. Cada driver sabe cómo convertir peticiones SQL para una base de datos concreta. Si no
disponemos del driver adecuado, no podemos conectarlos a una base de datos, y el JDBC
depende de las implementaciones concretas de cada fabricante. Por lo tanto, lo primero que debe
llevar a cabo un programa es cargar el driver adecuado para que el código de Java pueda
comunicarse con la base de datos.
Podemos describir el funcionamiento de un programa de Java con JDBC con los siguientes pasos:
Lo primero en Java para acceder a base de datos es establecer la conexión con el DBMS que se
desea usar. Esto incluye dos pasos:
1.Cargar el driver JDBC. Este es un paso muy simple y comprende una línea de código. Por
ejemplo, para nuestro caso, se utilizará el puente JDBC-ODBC:
Class.forName(sun.jdbc.odbc.JdbcOdbcDriver)
Connection
cnElecciones=DriverManager.getConnection(“jdbc:odbc:dsnElecciones”)
Es importante recordar las instrucciones SQL básicas para poder operar con el objeto Statement.
En primer lugar tenemos la instrucción de Selección la cual permite obtener campos y registros
de una o varias tablas:
Select Campos
from Tablas
Where Condiciones
Group by Campos de agrupamiento
Order by Campos
La instrucción de Actualización modifica los datos de uno, varios o todos los registros de una
tabla
Update tabla
set atributo = expresion
where Condiciones
La instrucción de Eliminación elimina uno, varios o todos los registros de una tabla
Delete From tabla
where Condiciones
Suponga que se desea consultar el total de votaciones que obtuvo cada candidato.
Para poder acceder los valores de los campos obtenidos se debe recorrer cada uno de los
registros. El método next() permite avanzar registro por registro a través del objeto ResulSet. La
primer vez que se llama el método, el cursor se ubica en el primer registro. Los siguientes llamados
permiten avanzar al siguiente registro.
Para poder obtener el valor de un campo, se tienen varios métodos dependiendo del tipo de dato
respectivo:
Método Descripción
getString() Permite obtener valores de campos de tipo VARCHAR y similares y puede convertir de otros
tipos de datos a String.
getFloat() Permite obtener valores de campos de tipo FLOAT
getInt() Permite obtener valores de campos de tipo INTEGER
Para completar nuestro ejemplo, supóngase que se desea visualizar el resultado de la consulta en
un cuadro de lista. El código sería:
import java.sql.*;
import java.awt.*;