A ver que os parece mi bautizo haciendo tutoriales, jeje, he hecho una pequeña guía para realizar la conexión con Access teniendo en cuenta el problema que os detallaba en este Tema:
////////////////////////////////////////////////////////////////////////////////////////////////
Dos primeros pasos JAVA-ACCESS (cargar y conectar controlador)Antes de nada, las importaciones, el constructor y los atributos de la clase son así:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JOptionPane;
public class ventanaprincipal extends javax.swing.JFrame {
Connection conexion;
Statement sentencia;
public ventanaprincipal() {
initComponents();
prepararBaseDatos();
}
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
PRIMERA PARTE (cargar controlador en java):
Esta parte tiene el siguiente código:
try {
String controlador = "sun.jdbc.odbc.JdbcOdbcDriver";
Class.forName(controlador).newInstance();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error al cargar el controlador");
}
Esto siempre es así, ahora para que esto funcione sin mas tienes que tener tu sistema x86 con plataforma JDK para x86, en definitiva todo de x86, si tienes un x64 con windows 8 no te puedo ayudar, he probado todo y no funciona nada, he probado a hacer lo que ahora voy a explicar a continuación, a instalar un JDK para x86 y asignarle a mi proyecto que trabaje con esa plataforma, pero nada de nada, seguro que habrá alguna solución o a lo mejor no, yo no la he encontrado, tuve que buscarme otro ordenador porque me exigían que mi proyecto fuera con Access, o sino hacerlo con MySQL u otra cosa.
Si no funciona lo atrás explicado (es decir, nos salto la excepción indicándonos Error al cargar el controlador) probaremos lo siguiente que tienes dos variantes según tengamos un sistema x86 o x64:
1.- Nos vamos a panel de control / Herramientas administrativas / Origenes de datos ODBC
(si os salen 2, es decir, Orígenes de datos ODBC (32 bits) y Origenes de datos ODBC (64 bits), aquí ya me pierdo, supongo que estáis con windows 8, es el caso que os cuento que no encontré solución, probé a hacer esto con los dos y no resulto).
2.- En la pestaña controladores comprobamos que este el controlador "Microsoft Access Driver (*.mdb)" en caso que trabajemos con un Access de extensión .mdb, o el controlador "Microsoft Access Driver (*.mdb, *.accdb)", en caso que trabajemos con un Access de extensión .accdb.
.mdb creo que son las versiones Access anteriores a 2007, REPITO CREO, la 2003 seguro que es .mdb, y las siguientes son .accdb, REPITO CREO, la 2010 seguro que ya es accdb.
3.- En caso que se encontrara el controlador deseado nos vamos a la pestaña DNS Usuario y hacemos clic en el botón Agregar.
3.1. - Seleccionamos en la ventana que se nos abre el controlador deseado, ya sabéis el que pone "Microsoft Access Driver (*.mdb)" para extensiones .mdb o "Microsoft Access Driver (*.mdb, *.accdb)" para extensiones .accdb. Cuidado con confundir con el que pone Driver Do Microsoft Access.
3.2.- Le damos a Finalizar, se nos cierra esta ventana y nos sale otra ventana.
3.3.- Donde pone Nombre del origen de datos, escribimos un nombre, normalmente el mismo que el de nuestra base de datos Access, recordarlo, porque luego lo usaremos (por ejemplo: mibasedatos), y hacemos clic en el botón seleccionar.
3.4.- En la nueva ventana que sale tendremos que buscar y ubicar nuestra base de datos, le damos a Aceptar, y cerramos todas las ventanas que teníamos abiertas del Orígenes de datos ODBC dando en el botón Aceptar.
3.5.- Nos vamos a NetBeans o Eclipse y seguimos con nuestro proyecto (SEGUNDA PARTE).
4.- En caso de que no se encuentre el controlador deseado, porque usa x64, cerramos Orígenes de datos ODBC y nos iríamos al menú inicio / accesorios y haciendo clic en el botón derecho hariamos clic en ejecutar como administrador.
4.1.- Si ya estamos en C:\windows\system32> (y si no lo estamos, nos ponemos ahí), escribimos esto: copy odbcad32.exe .\SYSWOW64 (estamos copiando el archivo odbcad32.exe de la carpeta system32 a la carpta syswow64).
4.2.- Escribimos exit y salimos del simbolo del sistema.
4.3.- Nos vamos a panel de control / Herramientas administrativas y con el botón derecho del ratón hacemos clic en Orígenes de datos ODBC y clic en propiedades.
4.4.- En la ventana que nos aparece en la pestaña acceso directo, en el JTextField Destino: sustituimos la palabra system32 por syswow64, es decir quedaría así: %windir%\syswow64\odbcad32.exe
4.5.- Aceptamos.
4.6.- Abrimos Origenes de Datos ODBC y nos vamos a la pestaña DNS Usuario y hacemos clic en el botón Agregar.
4.7. - Seleccionamos en la ventana que se nos abre el controlador deseado, ya sabéis el que pone "Microsoft Access Driver (*.mdb)" para extensiones .mdb o "Microsoft Access Driver (*.mdb, *.accdb)" para extensiones .accdb. Cuidado con confundir con el que pone Driver Do Microsoft Access.
4.8.- Le damos a Finalizar, se nos cierra esta ventana y nos sale otra ventana.
4.9.- Donde pone Nombre del origen de datos, escribimos un nombre, normalmente el mismo que el de nuestra base de datos Access, recordarlo, porque luego lo usaremos (por ejemplo: mibasedatos), y hacemos clic en el botón seleccionar.
4.10.- En la nueva ventana que sale tendremos que buscar y ubicar nuestra base de datos, le damos a Aceptar, y cerramos todas las ventanas que teníamos abiertas del Orígenes de datos ODBC dando en el botón Aceptar.
4.11.- Nos vamos a NetBeans o Eclipse y seguimos con nuestro proyecto (SEGUNDA PARTE).
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
SEGUNDA PARTE (creamos el objeto conexión):
Esta parte tiene el siguiente código si no has tenido que realizar ningún paso hasta ahora de los descritos por mi anteriormente:
try {
String DNS = "jdbc:odbc:Driver={Microsoft Access Driver (*mdb)};DBQ="+"Base\\mibasedatos.mdb";
String user = "";
String password = "";
conexion = DriverManager.getConnection(DNI, user, password);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error al realizar la conexón");
}
Si has llegado hasta aquí sin antes hacer nada de los apartados anteriores pero al ejecutar te salta esta excepción (Error al realizar la conexión) sin que haya saltado la excepción anterior (Error al cargar el controlador), entonces tendrías que hacer los pasos 2 y 3 completamente y después cambiar el código de crear el objeto de conexión por este:
try {
conexion = DriverManager.getConnection("jdbc:odbc:mibasedatos");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error al realizar la conexón");
}
MUY IMPORTANTE!!! Observar que donde pone "mibasedatos" es el nombre que asignamos a nuestro Origen de datos ODBC. Poned el nombre que pusisteis vosotros.
Bueno si después de esto no os funciona yo ya no os puedo ayudar.
Después de esto va la creación del objeto sentencia, que es así:
try {
sentencia = conexion.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error al crear el objeto sentencia");
}
Los pasos del 1 al 4 son extraídos de:
http://es.slideshare.net/hackerchurritos/conectar-java-con-access-2010Mis conocimientos son básicos en informática y esto que he escrito se basa en mi experiencia en este PEDAZO escalón que me encontré hasta que pude saltarlo (mas que saltarlo, esquivarlo, jajaj). Por lo que supongo que es posible que habré puesto información errónea o confusa, sobretodo al intentar ramificar el problema según la arquitectura y/o software de los equipos.
Así que cualquier estirón de orejas sera bienvenido. Saludos.