Conectar Java con Access

De ChuWiki

He metido todos los artículos de esta wiki y de http://chuidiang.org relativos a Java y JDBC en un pdf Libro JDBC Java. A través del enlace puedes comprarlo si tienes interés.

Supongamos que tenemos un fichero .mdb típico de una base de datos Access y queremos acceder a él desde java. Vamos a ver aquí cómo se puede hacer.

Crear la fuente de datos[editar]

Lo primero que hay que hacer es crear una fuente de datos en Windows. Para ello, desde el menú de Inicio, vamos eligiendo las siguientes opciones (Windows XP, puede ser algo distinto en otras versiones de Windows): "Inicio" -> "Configuracion" -> "Panel de control" -> "Herramientas administrativas" -> "Orígenes de datos". Obtenemos la siguiente ventana.

Ahí seleccionamos "MS Access Database" y le damos al botón "Agregar". Obtendremos la siguiente ventana

Elegimos "Microsoft Access Driver (*.mdb)" y le damos al botón "Finalizar". Se abrirá otra ventana para poner los datos de esta nueva fuente de datos

Escribimos un nombre de nuestro gusto en el "Nombre de origen de datos" y pulsamos el botón "crear" o "seleccionar", según queramos crear un fichero .mdb nuevo de Access o seleccionar uno ya existente. Debemos recordar el nombre porque será el que usemos más adelante en nuestro código java. Se abre una nueva ventana que nos permite navegar por los directorios del disco para buscar/crear el fichero .mdb de Access. Una vez hecho todo, vamos aceptando y cerrando ventanas.

El código java[editar]

Ahora sólo nos queda hacer el código java necesario para acceder a la base de datos Access. Lo primero es cargar el Driver correspondiente, que es un Driver genérico de sun (quizás con una máquina virtual que no sea la de Sun no lo tengas disponible). El código para cargar este Driver es

try {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   ...

Ahora establecemos la conexión con la siguiente cadena

   Connection conexion = DriverManager.getConnection("jdbc:odbc:nombre_fuente_datos");

donde nombre_fuente_datos es el nombre que hayamos dado en las ventanas al principio, cuando creamos la fuente de datos. A partir de aquí, el resto es java con base de datos normalito.

Un ejemplo completo[editar]

Supón que la base de datos .mdb de Access elegida tiene una tabla Gente con dos columnas. Para conectarnos y consultar esa tabla el código completo sería

package com.chuidiang.ejemplos.access_java;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Prueba
{

    /**
     * @param args
     */
    public static void main( String [] args)
    {
        try
        {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection conexion = DriverManager.getConnection("jdbc:odbc:nombre_fuente_datos");
            Statement st = conexion.createStatement();

            ResultSet rs = st.executeQuery("select * from Gente");
            while ( rs.next() )
            {
                System.out.println(rs.getObject(1));
                System.out.println(rs.getObject(2));
            }

        }
        catch ( Exception e )
        {
            System.out.println("Algun error en algun sitio");
        }

    }
}

Acceder a Access desde Linux[editar]

Con linux tenemos un problema y es que no podemos crear la fuente de datos odbc. Tendríamos entonces que bajarnos alguna librería odbc para linux, por ejemplo la de este enlace

http://www.easysoft.com/products/data_access/odbc-access-driver/index.html

o bien podemos probar cosas como este driver jdbc para access, con lo que nos podríamos saltar el odbc.

http://www.freedownloadscenter.com/Programming/Java/HXTT_Access.html