El DSN especificado contiene un error de coincidencia de architecture

tengo este error:

El DSN especificado contiene una falta de coincidencia de architecture entre el controlador y la aplicación

mientras intentaba conectarse a la base de datos usando NetBeans y Java Programming Language

Estoy usando Microsoft Access 2010 y mi sistema se ejecuta en 64 bits de Windows 7.

¿Cómo resuelvo este problema? Gracias a todos.

Ese mensaje aparece bajo las siguientes circunstancias:

  • tiene instalado Access Database Engine (también conocido como “ACE”)
  • usted crea un DSN ODBC para su conexión a la base de datos, y
  • su código Java se ejecuta en una JVM (Java Virtual Machine) cuyo “bit-ness” es diferente al de la versión instalada de ACE.

Por ejemplo,

  1. podría tener instalada la versión de 32 bits de ACE e intentar conectarse desde el código de Java que se ejecuta en una JVM de 64 bits, o

  2. podría tener la versión de 64 bits de ACE instalada e intentar conectarse desde el código de Java que se ejecuta en una JVM de 32 bits.

Si realmente desea usar el puente JDBC-ODBC, la solución es cambiar a la “otra” versión de ACE (es decir, cambiar de 32 bits a 64 bits o viceversa), o hacer que su código Java se ejecute bajo una JVM con el mismo “bit-ness” que la versión instalada de ACE.

(Tenga en cuenta que si tiene instalado Office, entonces “cambiar a ACE de 64 bits” realmente significa “cambiar a Office de 64 bits”. No puede “mezclar y combinar” componentes de Office de 32 y 64 bits).

Sin embargo, ahora que se ha eliminado el puente JDBC-ODBC de Java 8, debería considerar usar el controlador UCanAccess JDBC. Es una implementación pura de Java que no utiliza Access ODBC para manipular la base de datos, por lo que funciona tanto en JVM de 32 bits como de 64 bits en todas las plataformas que ejecutan Java (es decir, no solo Windows). Para más detalles, ver

Manipular una base de datos de Access desde Java sin ODBC