2010-03-04 24 views
5

Durante años, en sistemas de 32 bits nunca he tenido un problema. ¿Por qué no puedo usar un controlador ODBC Java de 64 bits con una base de datos de Access en Windows Server 2008? ¿Está el controlador ODBC en un sistema de 64 bits escrito en código de 32 bits o algo así? Aquí está el error que veo, utilizando una de 64 bits JDK1.6.018:¿Cómo uso el controlador ODBC Java de 64 bits con una base de datos de Access en Windows 2008?

java.sql.SQLException: [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application 
     at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957) 
     at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114) 
     at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073) 
     at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323) 
     at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174) 
     at java.sql.DriverManager.getConnection(DriverManager.java:582) 
     at java.sql.DriverManager.getConnection(DriverManager.java:185) 
     ..... 

sospecho que el controlador de acceso es de 32 bits, ya que no aparece en el panel de control de ODBC de 64 bits para Windows . Solo dos controladores de 64 bits (para SQL Server) están visibles en la pestaña "Controladores" del panel de control de ODBC.

Entonces, ¿qué puedo hacer? Preferiría no tener que usar SQL Server y el controlador JDBC Type-4 (pero ese sería mi último recurso).

Respuesta

0

Microsoft Access en Office 2010 tendrá una versión de 64 bits. Las versiones anteriores de Microsoft Office son solo de 32 bits.

El uso de SQLExpress es gratuito y fácil de usar, y Access y Java se pueden conectar a él, por lo que parece una buena opción.

ya que dijo que era un último recurso, la otra opción es ejecutar el JDK de 32 bits, lo que debería funcionar bien en el servidor 2008.

+0

Creo que hay un problema al ejecutar el JDK de 32 bits en una máquina de 64 bits. Sospecho que tiene algo que ver con la forma en que JVM usa .dlls para manejar la administración de memoria (RAM). Tuve problemas, cuando lo intenté, y por eso estoy usando el jdk de 64 bits. – djangofan

+0

@djangofan, la limitación estará en la cantidad de memoria que la JVM puede usar. Por supuesto, si hay problemas sutiles, no necesariamente sabría. – Yishai

+0

sí, probablemente sea cierto. Pensé lo mismo que pensé, al principio ... – djangofan

2

Ha intentado lanzar el gestor de ODBC de 32 bits de Windows 2008 - para ver si eso te ayuda a diagnosticar el problema?

La versión de 32 bits del archivo Odbcad32.exe se encuentra en la carpeta% systemdrive% WindowsSysWoW64

+0

respuesta útil. Gracias. – djangofan

1

que tenía el mismo problema y la solución, en mi caso, era utilizar un JDK de 32 bits.

+2

32 bit JDK solo funcionaría si hubiera instalado el MS Office 2010 de 32 bits. Además, en ese caso, generalmente necesita usar el panel de control odbccad32.exe que se encuentra en el directorio SYSWOW64. Digo "en general" porque hay algunas advertencias. – djangofan

2

Tuve el mismo problema. La causa fue que estaba usando DSN ODBC de 64 bits con un JDK de 32 bits. Estos deberían ser de la misma arquitectura (tanto ODBC DSN como JDK deben ser de 64 bits o 32 bits). Si registra ODBC DSN en 32 bits y llama desde una aplicación de 64 bits (JVM de 64 bits), se obtendría un error que indica que no se encuentra el origen DSN (Entonces, para que la aplicación vea el origen ODBC, la JVM está ejecutando la aplicación debe ser de la misma arquitectura que ODBS DSN: ambos deben ser de 64 bits o ambos de 32 bits). Espero que esto ayude.

+0

Sí, cuando me di cuenta de que hay 2 paneles de control ODBC, entonces las cosas empezaron a tener sentido. – djangofan

2

Si utiliza Microsoft Office 2010, que volverá a la arquitectura de 64 bits. Por lo tanto, eliminará este error relacionado con la falta de correspondencia de arquitectura entre el controlador y la aplicación.

1

En mi caso, tuve una 6u45 JDK de 32 bits en un XP que utiliza el JDBC : ODBC controlador para consultar un archivo .accdb . Así que tenía un JDK de 32 bits y también un MS Office de 32 bits que instalaba automáticamente el controlador necesario en mi computadora cuando lo instalé. Luego moví el proyecto a un Windows 7 con un Netbeans 7.3 con un JDK 6u45 de 32 bits PERO un MS Office 2013 de 64 bits, por lo que ese parece ser el problema, Si tiene un JDK de 32 bits instalado, necesita una versión de 32 bits de Office (con el controlador apropiado que viene con esa versión de Office). Y lo mismo con la versión de 64 bits.

En mi caso he buscado archivo Java de Oracle para la versión de 64 bits de JDK6u45 y cambió el JDK del proyecto para la versión de 64 bits.

Cuestiones relacionadas