Невозможно подключиться к базе данных MS Access через JDBC на Win 7 64-bit - PullRequest
3 голосов
/ 27 февраля 2010

Я пытался подключиться к базе данных MS Access 2007 через JDBC. Мой JDK - 64-разрядный JDK 1.6u18, а ОС - 64-разрядная Windows 7. Но проблема в том, что я не могу создать DSN, используя Windows\system32\odbcad32.exe, потому что он вообще не показывает драйверы ODBC для MS Access, а только драйверы для MS SQL Server.

При попытке нажать «Настроить» для «Базы данных MS Access» (я думаю, это уже созданный DSN), сначала отображается сообщение об ошибке: «Процедуры установки для драйверов Microsoft Access (* .mdb, * .accdb»). ) Драйвер ODBC не найден. Пожалуйста, переустановите драйвер. " А затем еще одно сообщение: «Обнаружены ошибки! Указанный DSN содержит несоответствие архитектуры между драйвером и приложением».

Я не могу переустановить MDAC, так как он не работает с Windows 7 (которая поставляется с собственным WDAC).

Файл odbcad32.exe в Windows\SysWOW64 позволяет мне создать DSN для MS Access, он показывает, что драйверы установлены правильно. Однако при попытке подключиться к этому DSN через программу Java я получаю следующее исключение:

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(Unknown Source)
            at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
            at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
            at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
            at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
            at java.sql.DriverManager.getConnection(Unknown Source)
            at java.sql.DriverManager.getConnection(Unknown Source)
            at AccessTest.main(AccessTest.java:19)

В чем может быть проблема и что мне нужно сделать, чтобы она работала? Моя ОС, а также JDK являются 64-битными. Не могу ли я подключиться к базе данных Access 2007, которая, как я предполагаю, является 32-разрядной? Любая помощь будет высоко оценен. Кроме того, если кто-то считает, что это неправильное место для этого вопроса, я заранее извиняюсь. Тогда, пожалуйста, ведите меня на соответствующий форум.

Другой вариант - найти сторонний драйвер JDBC для MS Access. Но мне нужно знать, что не так с моей конфигурацией. : - /

PS: я знаю, что существует множество более качественных баз данных, но по нескольким неудачным причинам у меня есть для использования только MS Access, и я должен заставить его работать.

Ответы [ 4 ]

3 голосов
/ 27 февраля 2010

Вы смотрели на драйверы Access 2010? Они работают с 64 битами из того, что я прочитал.

http://www.microsoft.com/downloads/details.aspx?FamilyID=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=ja&displaylang=en

1 голос
/ 03 октября 2011

Если вы получаете сообщение об ошибке в JDBC при запуске Windows 7, как указано выше, это 64-битная версия Java, которую вы установили вместо 32-битной. Так что установите Java 6 32-битную JVM и все снова станет нормальным. Это при условии, что вы используете обычный 32-битный MS Access, как вы привыкли.

1 голос
/ 10 июня 2011

У меня тоже была эта проблема некоторое время, и я наконец-то нашел решение, так что вот оно для всех.

Чтобы настроить соединение ODBC, мне пришлось использовать 32-битную версию odbcad32.exe, которую вы можете найти в c: \ windows \ sysWOW64 \ odbcad32.exe, так же, как вы это сделали. Я получил мою информацию отсюда: http://msdn.microsoft.com/en-us/library/ms712362%28v=vs.85%29.aspx

Так же, как и вы, после этого мое соединение все равно выдало ошибку несоответствия архитектуры.

Я подумал, что, поскольку драйвер был 32-разрядным, я мог попытаться запустить свое приложение, используя 32-разрядную JVM. Итак, я скачал 32-битную версию JRE 6U26, и все стало работать правильно.

Надеюсь, это поможет.

0 голосов
/ 19 мая 2010

Если у вас 64-битная версия jvm, вам нужен 64-битный драйвер ODBC. Используйте 64-битного администратора ODBC, к которому вы обращаетесь из панели управления, и определите свой источник данных там. Это должно работать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...