Указанный DSN содержит несоответствие архитектуры между Драйвером и Приложением. ЯВА
Я пытаюсь подключиться к базе данных, созданной MS Access, используя Java, но я не могу справиться. Я использую ODBC, и я получаю это исключение:
java.sql.SQLException: [Microsoft] [диспетчер драйверов ODBC] Указанный DSN содержит несоответствие архитектуры между драйвером и приложением
Моя Java:
package javaapplication2;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
*
* @author Owner
*/
public class JavaApplication2 {
/**
* @param args the command line arguments
*
*/
public static void main(String[] args) {
// TODO code application logic here
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String sourceURL = new String("jdbc:odbc:myDatabase");
System.out.println(sourceURL);
Connection dbConnection = DriverManager.getConnection(sourceURL,"admin","");
Statement myStmt = dbConnection.createStatement();
String query = "INSERT INTO People(ID, Name, Surname, Age, Contact, Location, Course) VALUES"
+ " (1007, 'Elroy', 'Smith', '33', 21366688, 'Somewhere', 'somecourse')";
myStmt.executeUpdate(query);
ResultSet results = myStmt.executeQuery("SELECT * FROM People");
while(results.next())
{
System.out.print(results.getString(1));
System.out.print(results.getString(2));
System.out.print(results.getString(3));
System.out.println(results.getString(4));
}
results.close();
}
catch(ClassNotFoundException cnfe)
{
System.out.println(cnfe);
}
catch(SQLException sqle)
{
System.out.println(sqle);
}
}
}
Ответы
Ответ 1
Никто из них не сделал это для меня. Я нашел ответ на MSDN. Однако были намеки на это. Архитектура ошибки ссылается на 32 против 64 бит. Мое решение состояло в том, чтобы выяснить, какое приложение работает под (Access), в котором находится 32b. Я нашел это, посмотрев вкладку "Процесс" Диспетчера задач, где все 32b-процессы имеют * 32 конец своих имен. Как было сказано, панель управления запускает 64-битную версию ODBC здесь
c:\windows\system32\odbcad32.exe
и 32-битная версия:
c:\windows\sysWOW64\odbcad32.exe
(проще всего скопировать и вставить в диалог запуска)
Итак, я установил DSN с именами, заканчивающимися на 32 и 64 в каждой из соответствующих панелей управления ODBC (администратор AKA), которые указывали на то же самое. Затем я выбрал/выбрал правильный вариант в зависимости от того, используется ли это приложение 32b или 64b.
Ответ 2
Вы получаете эту ту же самую ошибку при попытке подключиться к базе данных MySQL из MS-Access, когда битовая версия (32 против 64) Access не соответствует
- бит версии драйвера ODBC, который вы используете
- битную версию ODBC Manager, которую вы использовали для ее настройки.
Для тех из вас, кто пытается подключить MS-Access к MySQL в 64-битной системе Windows, я прошел через пытки, пытаясь заставить его работать как с MS-Access 2010, так и с MS-Access 2013. Наконец, и вот уроки, которые я изучил на этом пути:
Я купил новый Windows 7, 64-разрядный ноутбук, и у меня есть приложение, которое полагается на MS-Access, используя таблицы MySQL.
-
Я установил последнюю версию MySQL, 5.6, используя установку пакета All In One. Это позволяет одновременно установить как базу данных, так и драйверы ODBC. Это хорошо, но драйвер ODBC, который он устанавливает, кажется 64-разрядным, поэтому он не будет работать с 32-разрядным MS-Access. Это также кажется немного багги - не обязательно на этом. Когда вы добавляете новый DSN в ODBC Manager, этот драйвер отображается как "Microsoft ODBC for Oracle". Я не мог заставить его работать. Мне пришлось установить 32-битный, который обсуждается ниже.
- После установки MySQL работал нормально. Я восстановил базу данных приложения MySQL обычным способом. Теперь я хочу подключиться к нему с помощью MS-Access.
-
Ранее я установил Office 2013, который я предположил, был 64 бит. Но после проверки версии (File, Account, About Access) я вижу, что она 32 бит. Оба Access 2010 и 2013 чаще всего продаются как 32-разрядные версии.
-
Моя машина - 64-битная машина. Таким образом, по умолчанию, когда вы идете настроить свой DSN для MS-Access и обычным образом переходите в ODBC Manager через панель управления, "Административные параметры", вы получаете 64-разрядный диспетчер ODBC. Вы не можете этого знать! Ты просто не можешь сказать. Это огромная добыча! Из этого невозможно установить DSN и успешно подключиться к MS Access 32 бит. Вы получите страшную ошибку:
"указанный dsn содержит несоответствие архитектуры..."
-
Вы должны загрузить и установить 32-битный драйвер ODBC из MySQL. Я использовал версию 3.5.1
http://dev.mysql.com/downloads/connector/odbc/3.51.html
-
Вы должны сообщить диспетчеру ODBC на панели управления возможность совершить поход и вместо этого явно вызвать 32-разрядный ODBC-менеджер с помощью этой команды, выполненной в командной строке "Пуск":
C:\Windows\SysWOW64\odbcad32.exe
Я создал ярлык для этого на моем рабочем столе. Отсюда создайте свой DSN с этим менеджером. Важный момент: СОЗДАЙТЕ КАК СИСТЕМУ DSNS, НЕ ПОЛЬЗОВАТЕЛЬСКИХ DSNS! Это немного помогло мне.
Кстати, 64-разрядная версия ODBC Manager также может быть запущена явно как:
C:\Windows\system32\odbcad32.exe
-
После того, как вы установили 32-разрядный драйвер ODBC из MySql, при нажатии кнопки "Добавить" в ODBC Manager вы увидите 2 указанных драйверов. Выберите "MySQL ODBC 5.2 ANSI Driver". Я не пробовал драйвер UNICODE.
Это так. После того, как вы определили свой DSN в 32-разрядном ODBC-менеджере, вы можете подключиться к MySQL обычным способом изнутри Access - внешние данные, базу данных ODBC, ссылку на базу данных, выбрать "Источник механических данных" и DSN, созданный в вашем MySQL база данных будет там.
Ответ 3
Там несоответствие архитектуры. Драйвер JDBC и ваш JDK должны иметь одинаковую архитектуру. Если вы используете 32-битный драйвер и ваш JDK - 64 бит, вы получите эту ошибку.
См. this
Исправление: зависит от вашей архитектуры.
Вам понадобится 64-разрядные драйверы, если ваша Java - 64-разрядная.
Загрузить:
http://www.microsoft.com/downloads/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en
Ответ 4
По умолчанию Командная строка подключена к System32. Запустите 64-битную командную строку, т.е. C:\WINDOWS\SYSWOW64\CMD.EXE
. В этом случае скомпилируйте и запустите приложение Java.
Ответ 5
Проблема, с которой вы столкнулись, может быть связана с тем, что: у вас были 32-битные версии Office 32 и Command Prompt 64 бит.
Чтобы решить проблему, вам нужно выполнить следующие шаги:
-
Откройте ODBC Manager для DSN, используя:
C:\Windows\SysWOW64\odbcad32.exe
Это откроет ODBC Data Administrator для 32-битной версии, и вы увидите все драйверы базы данных.
-
После этого вам нужно открыть 32-битную командную строку, используя:
C:\Windows\SysWOW64\cmd.exe
Это откроет 32-битную версию командной строки. В этом новом CMD, пожалуйста, перекомпилируйте свою программу Java и запустите свою программу.
Надеюсь, это поможет.
Ответ 6
Немного поздно, но так как я столкнулся с той же проблемой, в вашем конкретном сценарии, я решил, что добавлю свое решение.
У меня Windows 7 (64-разрядная версия) и Office 2010 (32-разрядная версия). Я попытался с помощью строки подключения DSN-less:
jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=I:/TeamForge/ORS/CTFORS.accdb
и я попытался подключиться к DSN, используя как системные, так и SysWOW64-версии ODBC Admin, и ни одно из них не работало.
Что в конечном итоге сработало, должно было соответствовать бит-версии Java с разрядной версией Office. Как только я это сделал, я мог бы использовать либо режим DSN или DSN, но без каких-либо проблем.
Ответ 7
Я увидел этот ответ, и это сработало для меня.
https://msdn.microsoft.com/en-us/library/ms712362%28v=vs.85%29.aspx
После установки драйвера ODBC из программы установки драйвера вы можете определить для него один или несколько источников данных. Имя источника данных (DSN) должно предоставлять уникальное описание данных; например, расчет заработной платы или кредиторской задолженности. Источники пользовательских и системных данных, которые определены для всех установленных драйверов, перечислены на вкладках User DSN или System DSN диалогового окна "Администратор источника данных ODBC". Источники файлов данных в данном каталоге перечислены на вкладке "Файл DSN"; каталог, который будет показан, вводится в поле "Поиск" на вкладке "Файл DSN".
System_CAPS_noteNote
Чтобы управлять источником данных, который подключается к 32-разрядному драйверу под 64-разрядной платформой, используйте c:\windows\sysWOW64\odbcad32.exe. Чтобы управлять источником данных, который подключается к 64-битовому драйверу, используйте c:\windows\system32\odbcad32.exe. В "Администрировании" в 64-разрядной операционной системе Windows 8 есть значки для 32-битного и 64-битного диалогового окна "Администратор источника данных ODBC".
Если вы используете 64-разрядный odbcad32.exe для настройки или удаления DSN, который подключается к 32-разрядному драйверу, например, Driver do Microsoft Access (*.mdb), вы получите следующее сообщение об ошибке:
Указанный DSN содержит несоответствие архитектуры между Драйвером и Приложением
Чтобы устранить эту ошибку, используйте 32-разрядный файл odbcad32.exe для настройки или удаления DSN.
Источник данных связывает конкретный драйвер ODBC с данными, которые вы хотите получить через этот драйвер. Например, вы можете создать источник данных для использования драйвера ODBC dBASE для доступа к одному или нескольким файлам dBASE, найденным в определенном каталоге на вашем жестком диске или сетевом диске. Используя ODBC Data Source Administrator, вы можете добавлять, изменять и удалять источники данных, как описано в следующей таблице.
Ответ 8
Создайте ли DSN сначала в панели управления > "Администрирование" > "ODBC" > "Системный DSN".
Назовите его так же, как "myDatabase", и если я попрошу найти файл базы данных/доступа, укажите путь, используя опцию просмотра.
После того, как ур DSN будет создан успешно, вы сможете легко получить доступ к Ур БД.
Ответ 9
Если вы используете netbeans, перейдите в tools- > java Platform, измените jdk_home, который указывает на c:/programfiles/java/jdk1_7 на c: programFiles (x86)/java/jdk1_6_21
если не редактируется
найдите netbeans.cnf и внесите изменения, как указано abouve для jdk_home. перезагрузите чистые чипы и как это работает
У меня была та же проблема, но я работал.
Ответ 10
У меня возникла большая проблема, связанная с MySQL с 64-разрядного ноутбука, работающего под управлением Windows 7 с использованием MS Access 2010. Я нашел, что предыдущая статья очень полезна, но до сих пор не удалось подключиться с помощью odbc 3.5.1. Поскольку ранее я связал 32-битную машину с использованием Connector/ODBC 5.1.13, я загрузил эту версию и настроил ее, используя приведенные выше инструкции. Успех. Ответ заключается в том, чтобы попробовать разные версии Connector.odbc.
Ответ 11
Если вы подключаетесь к 64-битной платформе с помощью 32-разрядного драйвера, запустите исполняемый файл
C:\Windows\SysWOW64\odbcad32.exe и создать DSN. Он будет работать.
Ответ 12
Я столкнулся с этой проблемой при обновлении до сервера Windows 7 с некоторыми устаревшими приложениями CLASP. Пытается запустить 32-битное приложение на 64-битной машине.
Попробуйте настроить пулы приложений на 32-разрядную совместимость с True и/или создать dsn в 32 и 64 бит.
Откройте окно источника данных odbc в обеих версиях из окна запуска.
C:\Windows\SysWOW64\odbcad32.exe
C:\Windows\system32\odbcad32.exe
Ответ 13
Я столкнулся с этой проблемой. Это связано с архитектурой компьютера и используемой архитектурой базы данных.
Если вы используете 32-битную операционную систему, все работает хорошо, потому что вы можете установить только 32-битное программное обеспечение. Проблема возникает, когда вы используете 64-разрядную операционную систему.
Для решения этой проблемы просто - я долгое время нашел эту проблему.
- Знание операционной системы - 64 бит, но ваш Microsoft Office - 32 бита.
- Итак, чтобы вы могли получить доступ к своей базе данных с помощью NetBean IDE (при условии, что вы используете это), вам необходимо установить 32-битный JDK. Если вы установили 64 бита, вам необходимо удалить его и установить 32 бита.
Вы не можете получить доступ к своей базе данных, потому что ваша 64-разрядная JVM не такая же, как 32-разрядная JVM.
Чтобы добавить свою базу данных в свою систему
1. Панель управления
2. Инструменты администратора
3. Источник данных (ODBC)
щелкните правой кнопкой мыши по нему, изменив цель на
\ SysWOW64\odbcad32.exe
изменить начало в
г%\SysWOW64
Затем вы сможете запустить. Сообщите мне, если у вас возникли проблемы с этим.
Спасибо!
Ответ 14
Я исправил ошибку.
Выполните следующие действия:
- Установите версию JDK версии 32bt
- Установить MS-Office 2007
-
Настроить панель управления:
а. Панель управления b. Инструменты администратора c. Источник данных (ODBC)
щелкните правой кнопкой мыши по нему, чтобы изменить цель на \sysWOW64\odbcad32.exe
изменить начало на r%\SysWOW64
Выполните его и удачи. Работает в Windows 7, а также 8
Удалите новую версию MS-Office и установите только MS-Office 2007, если проблема по-прежнему сохраняется
Ответ 15
Чтобы решить эту проблему, сначала убедитесь, что ваше программное обеспечение java должно быть 32-битной версией, если оно 64-разрядная версия явно показывает ошибку несоответствия, поэтому попробуйте переустановить 32-разрядную версию java
И выполнить java-программу в команде
c:\windows\sysWOW64\odbcad32.exe
(проще всего скопировать и вставить в диалог запуска)
что ваша программа определенно работает
Ответ 16
Я думаю, что это также будет более полезным.
для соответствия пропуску архитектуры,
Я просто скопирую файл jdk из 32-битного файла C:\Program Files (x86)\Java\jdk1.7.0_71 и вставьте его в 64-битный файл. C:\Program Files\Java\jdk1.7.0 _10, затем переименуйте файл в соответствии с замененным файлом, чтобы избежать ошибки IDE (netbeans)
тогда вам будет хорошо.
Примечание:
Вы должны обмануть 64-битные файлы, поэтому, когда вы хотите создать 64-битное приложение, вы можете вернуть его в свое местоположение.
Ответ 17
Чтобы решить эту проблему, сначала убедитесь, что ваше программное обеспечение java должно быть 32-битной версией, если оно 64-разрядная версия явно показывает ошибку несоответствия, поэтому попробуйте переустановить 32-разрядную версию Java и выполните java-программу в команде c:\windows\sysWOW64\odbcad32.exe(проще всего скопировать и вставить в диалоговом окне запуска), чтобы ваша программа определенно работала
Ответ 18
Перейдите по этой ссылке и загрузите драйвер ODBC для 64-разрядной ОС.
http://www.microsoft.com/en-us/download/details.aspx?id=13255