For years, on 32-bit systems I have never had a problem. Why can’t I use 64-bit Java ODBC driver with a Access database on Windows Server 2008? Is the ODBC driver on a 64-bit system written in 32-bit code or something? Here is the error I see, using a 64-bit JDK1.6.018 :
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)
.....
I suspect that the Access driver is 32-bit because it doesn’t show up in the 64-bit ODBC control panel for windows. Only two 64-bit drivers (for SQL Server) are visible in the “Drivers” tab of the ODBC control panel.
So, what can I do? I would rather not have to use SQL Server and the JDBC Type-4 driver (but that would be my last resort).
Microsoft Access in Office 2010 will have a 64 bit version. Earlier versions of Microsoft Office are 32 bit only.
Using SQLExpress is both free and easy enough to use, and Access and Java can connect to it, so it seems like a good choice.
Since you said that was a last resort, the other option is to run the 32-bit JDK, which should run fine on Server 2008.