Как использовать 64-разрядный драйвер Java ODBC с базой данных Access в Windows 2008? - PullRequest
5 голосов
/ 04 марта 2010

В течение многих лет на 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)
       .....

Я подозреваю, что драйвер Access является 32-разрядным, потому что он не отображается в 64-разрядной панели управления ODBC для Windows. На вкладке «Драйверы» панели управления ODBC отображаются только два 64-разрядных драйвера (для SQL Server).

Итак, что я могу сделать? Я бы предпочел не использовать SQL Server и драйвер JDBC Type-4 (но это было бы моим последним средством).

Ответы [ 6 ]

2 голосов
/ 22 ноября 2011

Если вы используете Microsoft Office 2010, который вернется в 64-битную архитектуру. Таким образом, эта ошибка будет устранена из-за несоответствия архитектуры между драйвером и приложением.

2 голосов
/ 16 февраля 2011

У меня была такая же проблема. Причина была в том, что я использовал 64-битный ODBC DSN с 32-битным JDK. Они должны иметь одинаковую архитектуру (и ODBC DSN, и JDK должны быть либо 64-битными, либо 32-битными). Если вы зарегистрируете ODBC DSN на 32 битах и ​​вызовете из 64-битного приложения (64-битная JVM), вы получите сообщение об ошибке, что источник DSN не найден (поэтому приложение должно видеть источник ODBC - JVM, на котором вы запускаете приложение. должна иметь ту же архитектуру, что и ODBS DSN: оба должны быть 64-битными или 32-битными). Надеюсь это поможет.

2 голосов
/ 04 марта 2010

Вы пытались запустить 32-разрядный ODBC-менеджер из Windows 2008 - чтобы узнать, поможет ли это диагностировать проблему?

32-разрядная версия файла Odbcad32.exe находится в папке% systemdrive% WindowsSysWoW64

1 голос
/ 20 марта 2014

В моем случае у меня был 32-битный JDK 6u45 на XP, который использовал драйвер jdbc: odbc для запроса файла .accdb . Таким образом, у меня был 32-разрядный JDK, а также 32-разрядный MS Office, который автоматически устанавливал необходимый драйвер на моем компьютере при его установке. Затем я переместил проект на Windows 7 с Netbeans 7.3 с 32-битным JDK 6u45, НО с 64-битным MS Office 2013, так что, похоже, проблема: Если у вас установлен 32-битный JDK, вам нужен 32-бит версия Office (с соответствующим драйвером, который поставляется с этой версией Office). И то же самое с 64-битной версией.

В моем случае я искал в Java-архиве Oracle 64-битную версию JDK6u45 и изменил JDK проекта на 64-битную версию .

1 голос
/ 19 сентября 2010

У меня была такая же проблема, и в моем случае решение было использовать 32-битный JDK.

0 голосов
/ 04 марта 2010

Microsoft Access в Office 2010 будет иметь 64-разрядную версию. Более ранние версии Microsoft Office только 32-разрядные.

Использование SQLExpress является бесплатным и достаточно простым в использовании, и Access и Java могут подключаться к нему, так что это кажется хорошим выбором.

Поскольку вы сказали, что это последнее средство, другой вариант - запустить 32-битный JDK, который должен нормально работать на Server 2008.

...