Remkomplekty.ru

IT Новости из мира ПК
8 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Dsn архитектура драйвера и архитектура приложения

Подключение MySQL в Excel

Приложение Excel позволяет создавать подключение к внешним источникам, в том числе базам данных. Но при необходимости подключиться к базе данных под управлением СУБД MySQL, возникает проблема. Программа просто «не умеет» этого делать, но «научить» ее легко.

Установка драйвера

Прежде необходимо установить драйвер Connector/ODBC от Oracle Corporation, скачать который можно по адресу http://dev.mysql.com/downloads/connector/odbc/ (при выборе драйвера под определенную ОС есть важный нюанс, который будет описан ниже).

Создание источника данных

Далее необходимо создать источник данных ODBC. Для этого заходим в «Панель управления», выбираем пункт «Администрирование», в нем пункт «Источники данных (ODBC)». Откроется следующее окно:

Выбираем «Добавить» и попадаем в меню выбора драйвера:

В списке имеется два возможных драйвера для MySQL различных кодировок: Unicode и ANSI. Выбирайте необходимую Вам. Если не знаете, какая Вам нужна, или это не имеет значения, то лучше устанавливать Unicode.
В параметрах подключения указываете:

  1. Произвольное название источника;
  2. Описание источника;
  3. Сервер и порт. Порт оставляйте по умолчанию, если того не требуют настройки сервера;
  4. Пользователь и пароль, как при подключении в phpMyAdmin.

Протестируйте подключение к источнику, нажав кнопку «Test». Если подключение прошло успешно, то в списке баз данных «Database» должен появиться список доступных баз. Выдираем необходимую и жмем «OK». Источник создан.

Подключение к источнику из Excel

Проходим в книге Excel на вкладку «Данные» -> раздел «Подключения» -> «Из других источников» -> «Из мастера подключения данных».

Выбираем «ODBC DSN» -> созданное ранее подключение.

Дальнейшая работа аналогична стандартному подключению к SQL Server.

Ошибка совпадения архитектур

После установки соответствующего драйвера на 64-разрядную ОС, создании источника и подключения к нему, даже если все сделано правильно, может быть выдана ошибка «dns архитектура драйвера и архитектура приложения не соответствуют друг другу».
Проблема заключается в следующем. Вероятно, что во время инсталляции пакета программ Microsoft Office были выбраны параметры по умолчанию, при которых устанавливается 32-рязрядная версия. Таким образом, происходит несовпадение разрядностей драйвера и приложения.
Решение – скачать и установить дополнительно драйвер для Windows 32-bit.
Если установить только 32-битный драйвер, то подключение будет возможно, но создать источник через панель управления не получиться.

Указанный DSN содержит несоответствие архитектуры между Драйвером и Приложением. ЯВА

Я пытаюсь подключиться к базе данных, созданной MS Access, используя Java, но я не могу справиться. Я использую ODBC, и я получаю это исключение:

java.sql.SQLException: [Microsoft] [диспетчер драйверов ODBC] Указанный DSN содержит несоответствие архитектуры между драйвером и приложением

18 ответов

100 Pecos Bill [2012-09-21 22:59:00]

Никто из них не сделал это для меня. Я нашел ответ на MSDN. Однако были намеки на это. Архитектура ошибки ссылается на 32 против 64 бит. Мое решение состояло в том, чтобы выяснить, какое приложение работает под (Access), в котором находится 32b. Я нашел это, посмотрев вкладку «Процесс» Диспетчера задач, где все 32b-процессы имеют * 32 конец своих имен. Как было сказано, панель управления запускает 64-битную версию ODBC здесь

и 32-битная версия:

c:windowssysWOW64odbcad32.exe (проще всего скопировать и вставить в диалог запуска)

Итак, я установил DSN с именами, заканчивающимися на 32 и 64 в каждой из соответствующих панелей управления ODBC (администратор AKA), которые указывали на то же самое. Затем я выбрал/выбрал правильный вариант в зависимости от того, используется ли это приложение 32b или 64b.

20 Azolla99 [2013-06-22 04:36:00]

Вы получаете эту ту же самую ошибку при попытке подключиться к базе данных 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

Вы должны сообщить диспетчеру ODBC на панели управления возможность совершить поход и вместо этого явно вызвать 32-разрядный ODBC-менеджер с помощью этой команды, выполненной в командной строке «Пуск»:

Я создал ярлык для этого на моем рабочем столе. Отсюда создайте свой DSN с этим менеджером. Важный момент: СОЗДАЙТЕ КАК СИСТЕМУ DSNS, НЕ ПОЛЬЗОВАТЕЛЬСКИХ DSNS! Это немного помогло мне.

Кстати, 64-разрядная версия ODBC Manager также может быть запущена явно как:

После того, как вы установили 32-разрядный драйвер ODBC из MySql, при нажатии кнопки «Добавить» в ODBC Manager вы увидите 2 указанных драйверов. Выберите «MySQL ODBC 5.2 ANSI Driver». Я не пробовал драйвер UNICODE.

Это так. После того, как вы определили свой DSN в 32-разрядном ODBC-менеджере, вы можете подключиться к MySQL обычным способом изнутри Access — внешние данные, базу данных ODBC, ссылку на базу данных, выбрать «Источник механических данных» и DSN, созданный в вашем MySQL база данных будет там.

7 Mob [2012-01-17 17:07:00]

Там несоответствие архитектуры. Драйвер JDBC и ваш JDK должны иметь одинаковую архитектуру. Если вы используете 32-битный драйвер и ваш JDK — 64 бит, вы получите эту ошибку.

Исправление: зависит от вашей архитектуры.

Вам понадобится 64-разрядные драйверы, если ваша Java — 64-разрядная.

2 sai [2012-07-08 08:28:00]

По умолчанию Командная строка подключена к System32. Запустите 64-битную командную строку, т.е. C:WINDOWSSYSWOW64CMD.EXE . В этом случае скомпилируйте и запустите приложение Java.

Проблема, с которой вы столкнулись, может быть связана с тем, что: у вас были 32-битные версии Office 32 и Command Prompt 64 бит. Чтобы решить проблему, вам нужно выполнить следующие шаги:

Откройте ODBC Manager для DSN, используя: C:WindowsSysWOW64odbcad32.exe Это откроет ODBC Data Administrator для 32-битной версии, и вы увидите все драйверы базы данных.

После этого вам нужно открыть 32-битную командную строку, используя: C:WindowsSysWOW64cmd.exe Это откроет 32-битную версию командной строки. В этом новом CMD, пожалуйста, перекомпилируйте свою программу Java и запустите свою программу.

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

После установки драйвера ODBC из программы установки драйвера вы можете определить для него один или несколько источников данных. Имя источника данных (DSN) должно предоставлять уникальное описание данных; например, расчет заработной платы или кредиторской задолженности. Источники пользовательских и системных данных, которые определены для всех установленных драйверов, перечислены на вкладках User DSN или System DSN диалогового окна «Администратор источника данных ODBC». Источники файлов данных в данном каталоге перечислены на вкладке «Файл DSN»; каталог, который будет показан, вводится в поле «Поиск» на вкладке «Файл DSN». System_CAPS_noteNote

Читать еще:  Архитектура открытых систем это

Чтобы управлять источником данных, который подключается к 32-разрядному драйверу под 64-разрядной платформой, используйте c:windowssysWOW64odbcad32.exe. Чтобы управлять источником данных, который подключается к 64-битовому драйверу, используйте c:windowssystem32odbcad32.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, вы можете добавлять, изменять и удалять источники данных, как описано в следующей таблице.

Немного поздно, но так как я столкнулся с той же проблемой, в вашем конкретном сценарии, я решил, что добавлю свое решение.

У меня Windows 7 (64-разрядная версия) и Office 2010 (32-разрядная версия). Я попытался с помощью строки подключения DSN-less:

и я попытался подключиться к DSN, используя как системные, так и SysWOW64-версии ODBC Admin, и ни одно из них не работало.

Что в конечном итоге сработало, должно было соответствовать бит-версии Java с разрядной версией Office. Как только я это сделал, я мог бы использовать либо режим DSN или DSN, но без каких-либо проблем.

Создайте ли DSN сначала в панели управления > «Администрирование» > «ODBC» > «Системный DSN». Назовите его так же, как «myDatabase», и если я попрошу найти файл базы данных/доступа, укажите путь, используя опцию просмотра. После того, как ур DSN будет создан успешно, вы сможете легко получить доступ к Ур БД.

0 deepak [2012-06-07 07:46:00]

Если вы используете netbeans, перейдите в tools- > java Platform, измените jdk_home, который указывает на c:/programfiles/java/jdk1_7 на c: programFiles (x86)/java/jdk1_6_21

если не редактируется найдите netbeans.cnf и внесите изменения, как указано abouve для jdk_home. перезагрузите чистые чипы и как это работает У меня была та же проблема, но я работал.

0 Raj Kumar [2016-03-12 15:18:00]

Чтобы решить эту проблему, сначала убедитесь, что ваше программное обеспечение java должно быть 32-битной версией, если оно 64-разрядная версия явно показывает ошибку несоответствия, поэтому попробуйте переустановить 32-разрядную версию Java и выполните java-программу в команде c:windowssysWOW64odbcad32.exe(проще всего скопировать и вставить в диалоговом окне запуска), чтобы ваша программа определенно работала

Чтобы решить эту проблему, сначала убедитесь, что ваше программное обеспечение java должно быть 32-битной версией, если оно 64-разрядная версия явно показывает ошибку несоответствия, поэтому попробуйте переустановить 32-разрядную версию java И выполнить java-программу в команде c:windowssysWOW64odbcad32.exe (проще всего скопировать и вставить в диалог запуска) что ваша программа определенно работает

Я исправил ошибку.

Выполните следующие действия:

  • Установите версию JDK версии 32bt
  • Установить MS-Office 2007

Настроить панель управления: а. Панель управления b. Инструменты администратора c. Источник данных (ODBC)

щелкните правой кнопкой мыши по нему, чтобы изменить цель на sysWOW64odbcad32.exe изменить начало на r%SysWOW64

Выполните его и удачи. Работает в Windows 7, а также 8

Удалите новую версию MS-Office и установите только MS-Office 2007, если проблема по-прежнему сохраняется

У меня возникла большая проблема, связанная с MySQL с 64-разрядного ноутбука, работающего под управлением Windows 7 с использованием MS Access 2010. Я нашел, что предыдущая статья очень полезна, но до сих пор не удалось подключиться с помощью odbc 3.5.1. Поскольку ранее я связал 32-битную машину с использованием Connector/ODBC 5.1.13, я загрузил эту версию и настроил ее, используя приведенные выше инструкции. Успех. Ответ заключается в том, чтобы попробовать разные версии Connector.odbc.

Я столкнулся с этой проблемой при обновлении до сервера Windows 7 с некоторыми устаревшими приложениями CLASP. Пытается запустить 32-битное приложение на 64-битной машине.

Попробуйте настроить пулы приложений на 32-разрядную совместимость с True и/или создать dsn в 32 и 64 бит.

Откройте окно источника данных odbc в обеих версиях из окна запуска. C:WindowsSysWOW64odbcad32.exe C:Windowssystem32odbcad32.exe

0 Andrew [2014-07-07 06:59:00]

Я столкнулся с этой проблемой. Это связано с архитектурой компьютера и используемой архитектурой базы данных.

Если вы используете 32-битную операционную систему, все работает хорошо, потому что вы можете установить только 32-битное программное обеспечение. Проблема возникает, когда вы используете 64-разрядную операционную систему.

Для решения этой проблемы просто — я долгое время нашел эту проблему.

  • Знание операционной системы — 64 бит, но ваш Microsoft Office — 32 бита.
  • Итак, чтобы вы могли получить доступ к своей базе данных с помощью NetBean IDE (при условии, что вы используете это), вам необходимо установить 32-битный JDK. Если вы установили 64 бита, вам необходимо удалить его и установить 32 бита.

Вы не можете получить доступ к своей базе данных, потому что ваша 64-разрядная JVM не такая же, как 32-разрядная JVM.

Чтобы добавить свою базу данных в свою систему 1. Панель управления 2. Инструменты администратора 3. Источник данных (ODBC) щелкните правой кнопкой мыши по нему, изменив цель на SysWOW64odbcad32.exe изменить начало в г%SysWOW64

Затем вы сможете запустить. Сообщите мне, если у вас возникли проблемы с этим.

Я думаю, что это также будет более полезным.

для соответствия пропуску архитектуры,

Я просто скопирую файл jdk из 32-битного файла C:Program Files (x86)Javajdk1.7.0_71 и вставьте его в 64-битный файл. C:Program FilesJavajdk1.7.0 _10, затем переименуйте файл в соответствии с замененным файлом, чтобы избежать ошибки IDE (netbeans)

тогда вам будет хорошо.

Примечание: Вы должны обмануть 64-битные файлы, поэтому, когда вы хотите создать 64-битное приложение, вы можете вернуть его в свое местоположение.

0 Senthil [2014-04-04 20:30:00]

Если вы подключаетесь к 64-битной платформе с помощью 32-разрядного драйвера, запустите исполняемый файл C:WindowsSysWOW64odbcad32.exe и создать DSN. Он будет работать.

Перейдите по этой ссылке и загрузите драйвер ODBC для 64-разрядной ОС.

Управление источниками данных ODBC

Open Database Connectivity (ODBC) — это протокол, используемый для подключения базы данных Microsoft Access к внешнему источнику данных, например Microsoft SQL Server. В этой статье содержатся общие сведения об источниках данных ODBC, способах их создания и подключения к ним с помощью Microsoft Access. Действия, которые требуется выполнить, зависят от используемых баз данных и драйверов ODBC.

В этой статье

Сведения об источниках данных ODBC

Источник данных — это источник, который содержит данные и сведения о подключении, необходимые для доступа к этим данным. Источником данных может быть сервер SQL Server, реляционная СУБД Oracle, электронная таблица или текстовый файл. Сведения о подключении могут включать расположение сервера, имя базы данных, идентификатор входа, пароль и различные параметры драйвера ODBC, описывающие способ подключения к источнику данных. Эти сведения можно получить у администратора базы данных, к которой нужно подключиться.

В архитектуре ODBC приложения (такие как Access) подключаются к диспетчеру драйверов ODBC, который, в свою очередь, использует конкретный драйвер ODBC (например, Microsoft SQL ODBC) для подключения к источнику данных. В Access источники данных ODBC используются для подключения к внешним источникам данных, у которых нет встроенных драйверов.

Чтобы подключиться к такому источнику данных, выполните указанные ниже действия.

Установите соответствующий драйвер ODBC на компьютере с источником данных.

Определите имя источника данных (DSN) с помощью программы Администратор источников данных ODBC, чтобы сохранить сведения о подключении в реестре Microsoft Windows или DSN-файле, либо с помощью строки подключения в коде Visual Basic, чтобы передать сведения о подключении непосредственно диспетчеру драйверов ODBC.

Машинные источники данных

Машинные источники данных хранят сведения о подключении в реестре Windows на определенном компьютере. Такие источники данных можно использовать только на компьютере, на котором они определены. Есть два типа машинных источников данных: пользовательские и системные. Пользовательские источники данных доступны и отображаются только для текущего пользователя. Системные источники данных могут использовать все пользователи компьютера. Они отображаются для всех этих пользователей и системных служб. Машинные источники данных особенно полезны, когда требуется обеспечить дополнительную защиту, поскольку машинный источник данных могут просматривать только вошедшие в систему пользователи. Кроме того, такой источник нельзя удаленно скопировать на другой компьютер.

Файловые источники данных

Файловые источники данных (также называемые DSN-файлами) хранят сведения о подключении в текстовых файлах, а не в реестре Windows, и, как правило, более гибки в использовании, чем машинные источники данных. Например, файловый источник данных можно скопировать на любой компьютер с подходящим драйвером ODBC, чтобы обеспечить в приложении точность и согласованность сведений о подключении ко всем используемым компьютерам. Кроме того, можно поместить файловый источник данных на отдельный сервер, сделать его общим для нескольких компьютеров в сети и легко управлять централизованными сведениями о подключении.

Некоторые файловые источники данных нельзя сделать общими. Такие источники располагаются на отдельном компьютере и указывают на машинный источник данных. Их можно применять для доступа к существующим машинным источникам данных из файловых источников данных.

Строки подключения

В модуле можно определить форматированную строку со сведениями о подключении. Строка подключения передает сведения о подключении непосредственно диспетчеру драйверов ODBC. Это помогает упростить приложение, устраняя необходимость создания DSN администратором или пользователем перед использованием базы данных.

Дополнительные сведения об интерфейсе ODBC см. в разделе MSDN Справочник программиста по ODBC.

Добавление источника данных ODBC

Прежде чем продолжить, установите подходящий драйвер ODBC для источника данных, к которому нужно подключиться.

Примечание: Для добавления или настройки источника данных ODBC необходимо входить в группу администраторов локального компьютера.

Нажмите кнопку Пуск и выберите пункт Панель управления.

На панели управления дважды щелкните элемент Администрирование.

В диалоговом окне «Администрирование» дважды щелкните элемент Источники данных (ODBC).

Откроется диалоговое окно Администратор источников данных ODBC.

Откройте вкладку Пользовательский DSN, Системный DSN или Файловый DSN в зависимости от типа источника данных, который нужно добавить. Дополнительные сведения см. в разделе Сведения об источниках данных ODBC.

Нажмите кнопку Добавить.

Выберите драйвер, который нужно использовать, и нажмите кнопку Готово или Далее.

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

Следуйте указаниям и введите требуемые сведения о подключении в последующих диалоговых окнах.

Для получения дополнительных сведений об отдельных параметрах нажмите кнопку Справка в диалоговом окне ODBC.

Intel представила «универсальный драйвер Windows» (UWD) для Windows 10

Обновленные драйверы получили название Windows Modern Drivers или универсальный драйвер Windows (UWD). Microsoft стала требовать их с выходом October 2018 Update для Windows 10.

С сегодняшнего дня предстоящие релизы драйверов Intel Graphics будут выпускаться в виде UWD и заменят ваши текущие драйверы. Хотя, при необходимости, вы сможете снова откатиться до классических версий драйверов, вам придется вручную удалить современную версию на странице «Приложения и возможности».

Что нового в Intel Graphics Driver 25.20.100.6444 (UWD)

Первые UWD драйверы Intel имеют идентификатор 25.20.100.6444 и доступны только для Windows 10 – Fall Creators Update, April 2018 Update, October 2018 Update. Они поддерживают только 64-битную архитектуру.

Кроме перехода на новую модель драйверов, новая версия также включает поддержку запуска Artifact and Farming Simulator 2019 и оптимизации для следующих игр:

  • Fallout 4
  • Far Cry 5
  • FIFA 18
  • Paladins
  • Path of Exile
  • The Sims 4
  • SMITE
  • Borderlands 2
  • Euro Truck Simulator 2
  • PLAYERUNKNOWN’S BATTLEGROUNDS
  • Rocket League
  • Witcher 3

Драйверы поставляются с несколькими улучшениями и новыми функциями, в том числе с автоматической подстройкой для игр:

  • Обновления функции автоматической подстройки под игры.
  • Снижено потребление ОЗУ при использовании OpenGL.
  • Улучшена автономность при использовании динамического переключения частоты обновления экрана для поддерживаемых мониторов.
  • Улучшения стабильности драйвера Vulkan.

Кроме того, данная версия исправляет несколько проблемы и включает улучшения производительности для ряда игр:

  • Исправлены небольшие графические искажения в NBA 2K19, FIFA 19 (DX12), Assassin’s Creed: Origins.
  • Исправлены периодические сбои и зависания в Call of Duty: Infinite Warfare, FIFA 19 (DX12), World of Warcraft: Battle for Azeroth (DX12).
  • Исправлена проблема некорректного отображения разрядности цвета, что приводила к нарушениям цветопередачи.
  • Исправлена проблема недоступности установки пользовательского разрешения 980 x 588 @ 60 Гц.
  • Исправлена проблема, когда три и более мониторов не поддерживались в режиме расширенной настройки.
  • Исправлены периодические сбои и зависания при использовании Miracast в расширенном режиме в системах на базе процессоров Intel® Pentium® Silver и Intel® Celeron®.
  • Исправлена небольшое снижение производительности в версии 100.6373 в играх Battlefield IV и Dragon Age.

Скачать Intel Graphics Driver для Windows 10

Если вы хотите установить универсальный драйвер Windows (UWD), вы можете скачать новую версию на нашем сайте. Intel не рекомендует использовать метод установки «У меня есть диск» или путем редактирования файла INI. В этом случае происходит обход процесса замены классических драйверов, что может привести к проблемам стабильности. Установщики драйверов в этом и следующих релизах будет доступны в формате .exe файлов. Полный список совместимого оборудования доступен в заметках к выпуску.

Сохраните и запустите установочный файл, а затем следуйте инструкциям на экране. Не забудьте выполнить перезагрузку системы. Если перезагрузка не начнется автоматически, то запустите ее принудительно, чтобы применить изменения.

Последнюю версию драйвера также можно установить с помощью приложения Intel Driver & Support Assistant. Запустите утилиту и проверьте наличие последних версий драйверов для продуктов Intel.

Программное управление источниками данных ODBC

Введение

Тема нашего сегодняшнего разговора — ODBC. Если вы хоть раз писали СУБД (системы управления базами данных), то вам, наверное, знакома эта аббревиатура. Расшифровывается ODBC как Open DataBase Connectivity (вольный перевод — открытая система связи с базами данных). Open (открытая) в данном случае означает «расширяемая», «легко наращиваемая», «открытая для модификаций». Вы сами это поймете, если посмотрите на архитектуру построения ODBC:

Как легко заметить, она действительно легко наращиваемая. Для добавления нового типа БД нужно лишь написать драйвер и зарегистрировать его. Еще одно преимущество, вытекающее из такого построения ODBC — пользовательское приложение общается с физической БД через менеджер драйверов, фактически ничего не зная о типе используемой БД (общение менеджера драйверов и самих драйверов более менее стандартно, так что с точки зрения пользователя все источники данных обладают практически одинаковыми свойствами). Таким образом, вы легко можете поменять физический тип базы данных, а приложение даже не узнает об этом (конечно, существуют исключения из-за особенностей поддержки языка SQL различными типами БД, но они несущественны).

Физически ODBC представляет собой набор динамических библиотек DLL, которые обслуживают подключение и работу с конкретным типом базы данных.При запросе на подключение к определенной, заранее описанной базе «активизируется» определенная DLL — драйвер этого типа БД. Обращение к определенной базе данных происходит по имени так называемого источника данных ODBC (или DSN — data source name). Можно представить DSN как своего рода объявление БД на данном компьютере, причем DSN может быть пользовательским, т.е. находится в области видимости только одного польователя, в сеансе которого был создан этот DSN, и системным, т.е. видимым всеми пользователями данного компьютера.

Управление источниками данных ODBC (да и вообще настройкой всей системы ODBC) осуществляется с помощью специальной программы — ODBC-администратора. Давайте разберем, где его можно найти в различных версиях Windows:

— Windows 9х — сам исполняемый файл odbcad32.exe лежит в каталоге WindowsSystem. Запускать его можно напрямую либо через Панель управления (значок «Источники данных ODBC (32-бит)»). Если на компьютере установлен BDE, запустите администратор BDE и из меню Object выберите пункт ODBC Administrator.

— Windows 2000 — исполняемый файл odbcad32.exe лежит в каталоге WinNTSystem32, а запускать его можно через Панель управления -> Администрирование -> Источники данных ODBC. К сожалению, у меня нет возможности проверить, как с ODBC в NT3.51 / 4 — не думаю, что там ребята из Microsoft сильно его спрятали.

Почему ODBC?

Ведь есть же BDE, скажете вы. Да, возможно вы правы. Однако здесь есть «но». У обоих движков есть свои преимущества и недостатки. ODBC намного лучше работает с «родными, от Microsoft» источниками данных продуктов Microsoft Office — типа Access, Excel, MS SQL Server (вообще-то из-за Access я и затеял всю эту писанину). Кроме того, в стандартный дистрибутив BDE, который можно на каждом шагу найти в Интернете, я что-то ни разу не встречал SQL Links, впрочем, как я ни разу не встречал и отдельного дистрибутива SQL Links. А именно после установки SQL Links в BDE появлется возможность создавать алиасы к Access, MS SQL Server, Oracle и др. типам баз данных. Устанавливать же полную версию C++Builder или Delphi на компьютер пользователя может не каждый. А ODBC на «голой» машине уже содержит драйверы Access, Excel, FoxPro и SQL Server. В общем, для общего развития не помешает освоить и ODBC, тем более что access’овские базы, с которыми мы будем работать через ODBC, очень надежны (не в пример стандартным BDE’шным paradox’овым, у которых то и дело сыпятся индексы, а про такое поле как счетчик я вообще молчу), практически на любом компьютере пользователя установлен Office, что позволяет вносить коррективы «на месте», да и удобство всей базы в одном файле тоже иногда сказывается.

Фнукции, с которыми нам придется работать

Естественно, я не буду рассказывать обо всех функциях, с помощью которых можно сделать с ODBC все, что угодно. Поверьте, их очень много. Нам же для нашей практической задачи достаточно будет всего четырех:

1. Функция SQLDataSources возвращает список всех источников данных ODBC.

  • hEnv — хэндл, возвращаемый функцией SQLAllocEnv();
  • fDirection — задает режим работы. Может принимать значения SQL_FETCH_FIRST — вернуть первую запись и SQL_FETCH_NEXT — вернуть следующую запись. Логика работы аналогична функциям FindFirst и FindNext (помните DOS?);
  • szDSN — указатель на буфер длиной не менее cbDSNMax, куда будет записано имя источника данных;
  • cbDSNMax — длина буфера szDSN;
  • pcbDSN — указатель на целое, куда записывается реальная длина (не включая завершающий ) принятого имени источника данных;
  • szDescription — указатель на буфер длиной как минимум 255 символов, куда запистывается описание принятого источника данных;
  • cbDescriptionMax — длина буфера szDescription;
  • pcbDescripton — указатель на целое, куда записывается реальная длина описания источника данных.

2. Функция SQLConfigDataSources добавляет, изменяет или удаляет указанный источник данных.

  • hwndParent — хэндл родительского окна. Если не равен NULL, отображается стандартный для данного типа источника данных диалог настройки.
  • fRequest — тип запрашиваемой операции. Может принимать следующие значения:
    • ODBC_ADD_DSN (ODBC_ADD_SYS_DSN) — запрос на создание нового пользовательского (системного) источника данных;
    • ODBC_CONFIG_DSN (ODBC_CONFIG_SYS_DSN) — запрос на изменение существующего пользовательского (системного) источника данных;
    • ODBC_REMOVE_DSN (ODBC_REMOVE_SYS_DSN) — удаление пользовательского (системного) источника данных.
  • lpszDriver — указатель на строку, содержащую имя драйвера, ассоциированного с конкретным типом БД;
  • lpszAttributes — указатель на строку атрибутов в форме ключевое слово — значение. Каждая такая пара должна заканчиваться символом , в конце строки атрибутов должен стоять двойной символ .

Приведем несколько примеров строки атрибутов, чтобы вам было понятно, что это такое:

«DSN=MySourceUID=MyLoginPWD=MyPass» — источник данных с именем MySource, логин — MyLogin, пароль — MyPass

Каждый драйвер «понимает» свои ключевые слова, чаще всего применяются:

Для баз данных Microsoft Access для указания имени БД вместо DATABASE используется ключевое слово DBQ.

3. Функция SQLAllocEnv создает новый хэндл для использования в других функциях и инициализирует интерфейс для работы с ODBC

hEnv — указатель на переменную, которая будет хранить созданный хэндл в случае удачного выполнения функции

4. Функция SQLFreeEnv удаляет заданный хэндл и освобождает всю память, ассоциированную с ним.

  • hEnv — хэндл, который нужно удалить

Исходный код

Сначала несколько замечаний. В C++Builder есть заголовочные файлы для работы с ODBC. Нам нужно два из них — odbcinst.h и sql.h. Добавьте строки

в начало вашего файла. Реализация функций, описанных в этих файлах, находится в нескольких DLL, лежащих в каталоге WindowsSystem (или WinNTSystem32). В наших примерах будут использоваться две такие DLL, а именно odbc32.dll и odbccp32.dll. Чтобы подключить их к проекту, нужно проделать следующие шаги:

1. Запускаем любой досовский файл-менеджер или командную строку Windows и переходим в каталог WindowsSystem (WinNTSystem32) и находим эти две библиотеки.

2. Если каталог BIN С++Builder’а прописан в переменной окружения PATH, просто набираем

иначе набираем полностью путь к файлу implib.exe, либо копируем его в каталог, прописанный в PATH.

3. То же самое проделываем с odbccp32.dll:

4. Полученные .lib — файлы копируем в каталог с проектом

5. Из меню Project выбираем пункт Add to Project. и поочередно добавляем odbc32.lib и odbccp32.lib.

Все, теперь система сама загрузит эти DLL во время запуска программы.

Пример 1: Получаем список уже созданных источников данных ODBC.

Этот фрагмент кода просто перебирает все уже созданные источники данных. В первой строке фрагмента после объявления переменных создается хэндл текущего сеанса работы с ODBC, затем выбирается первое имя DSN. Если первое имя успешно прочитано (retCode содержит константу SQL_SUCCESS), то в цикле выбирается следующий DSN и т.д. до тех пор, пока не будет прочитан последний DSN. Если на место комментария вставить код (ListBox1 -> Items -> Add(DSNName)), добавляющий прочитанное имя в ListBox, например, то вы сможете просмотреть весь этот список. А если на место комментария вставить что-нибудь типа

то мы проверим, сможет ли наша программа работать нормально.

Пример 2: Создаем новый источник данных.

В этом примере вы узнаете, как создать системный DSN для базы данных Access. Предположим, файл с БД лежит в том же каталоге, что и программа, а его имя — db1.mdb.

Как видите, здесь уже не нужны хэндлы и код достаточно ясный. В первых трех строках — дописываем в строку атрибутов путь к файлу БД. Затем собственно создаем источник. Обработка ошибок тривиальна.

Важное замечание: При создании DSN если такое имя уже есть, то не возвращается ошибка, а создается DSN с текущими параметрами.

Пример 3: Как все это собрать воедино и использовать в программе

Здесь кода не будет, здесь будет описание. Итак, у нас есть программа, которой нужно «присоединиться» к базе Microsoft Access, лежащей совсем рядом, в текущем каталоге. На машине пользователя нам не нужно ничего, кроме стандартного набора bpl и BDE. Но — теперь не нужны SQL Links, можно использовать, например, Install Shield, можно взять отдельный дистрибутив BDE. Поехали:

1. На основную форму проекта кидаем компоненту TDatabase. Устанавливаем ее свойства: LoginPrompt — false, DatabaseName — dbMain, AliasName — c2a (имя источника данных ODBC). Во всех компонентах TQuery или TTable свойство Database Name будет равно dbMain. Конечно, можно не использовать компоненту TDatabase, а в TQuery или TTable прямо указывать имя источника данных ODBC, но представьте, если вы написаи проект формочек на двадцать-тридцать, а потом решили, что имя источника ‘MySuperDSN’ не в полной мере отражает всю вашу крутость 🙂 Изменять свойство у полусотни компонент — очень муторное занятие, поверьте.

2. В конструкторе основной формы прописываем код примера №1, вставляя на место комментария следующий код:

а после цикла — такой фрагмент:

3. Функция NewDSN() полностью повторяет код примера №2.

Теперь при первом запуске программы будет создан источник данных ODBC Microsoft Access с именем c2a, ссылающийся на файл db1.mdb, лежащий в том же каталоге, что и программа.

4. На всякий непредвиденный случай (если вы переместили программу в другой каталог, поменялась буква диска или сетевое имя, где лежит база данных) можно в программе предусмотреть немедленное перезаписывание DSN по горячей клавише, что-то типа такого:

Здесь для перезаписи DSN используется комбинация Alt-Ctrl-F1

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×