Подтвердить что ты не робот

Указанный 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);
        }
    }
}
4b9b3361

Ответ 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(проще всего скопировать и вставить в диалоговом окне запуска), чтобы ваша программа определенно работала