В течение многих лет в 32-разрядных системах у меня никогда не было проблемы. Почему я не могу использовать 64-разрядный Java драйвер ODBC с базой данных Access на Windows Server 2008? Драйвер ODBC в 64-разрядной системе записан в 32-битном коде или чем-то? Вот ошибка, которую я вижу, с помощью 64-разрядного 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)
.....
Я подозреваю, что драйвер Доступа является 32-разрядным, потому что он не собирается в 64-разрядной панели управления ODBC для окон. Только два 64-разрядных драйвера (для SQL Server) видимы на вкладке "Drivers" панели управления ODBC.
Так, что я могу сделать? Я не должен использовать SQL Server и драйвер Типа 4 JDBC (но это было бы моим последним средством).
Microsoft Access в Office 2010 будет иметь 64-разрядную версию. Более ранние версии Microsoft Office только 32-разрядные.
Использование SQLExpress является одновременно бесплатным и достаточно простым в использовании, и Access и Java могут подключаться к нему, так что это кажется хорошим выбором.
Поскольку вы сказали, что это крайняя мера, другой вариант - запустить 32-разрядный JDK, который должен нормально работать на Server 2008.
Пробовали ли вы запустить 32-битный менеджер ODBC из Windows 2008 - чтобы посмотреть, поможет ли это диагностировать проблему?
32-битная версия файла Odbcad32.exe находится в папке %systemdrive%WindowsSysWoW64