5 MyODBC 3.51.03: тонкости и советы
Источник данных идентифицирует путь для данных, который может включать
сетевую библиотеку, сервер, базу данных и другие атрибуты, в данном случае
источник данных задает путь к базе данных MySQL. Чтобы соединиться
с источником данных, Driver Manager проверяет системный реестр Windows для сбора
специфической информации для подключения.
ODBC Driver Manager и MyODBC Drivers используют
вход системного реестра, созданный ODBC Data Source Administrator.
Этот вход содержит информацию относительно каждого источника данных и связанного
с ним драйвера. Прежде, чем Вы сможете соединяться с источником данных,
информация для конкретного подключения должна быть добавлена к системному
реестру.
Машинные источники данных сохраняют информацию
подключения в системном реестре Windows на специфическом компьютере с
определяемым пользователем именем. Вы можете использовать машинные источники
данных только на компьютере, на котором они определены. Имеются два типа
машинных источников данных: пользовательские и
системные.
Пользовательские источники данных могут
использоваться только текущим пользователем и видны только этому пользователю.
Системные источники данных могут использоваться
всеми пользователями на компьютере и видны всем пользователям компьютерных и
системных сервисов, типа Microsoft Windows NT services.
Машинный источник данных особенно полезен, когда Вы хотите обеспечивать
дополнительную защиту, поскольку только зарегистрировавшиеся пользователи могут
рассматривать машинный источник данных, и он не может быть скопирован удаленным
пользователем на другой компьютер.
Файловые источники данных (также известны как
DSN-файлы) сохраняют информацию подключения в текстовом файле, и
вообще более гибки в использовании, чем машинные источники данных. Например, Вы
можете копировать файловый источник данных на любой компьютер с правильным
ODBC-драйвером так, чтобы Ваша прикладная программа могла полагаться на
непротиворечивую и точную информацию подключения на всех компьютеры, которые это
используют. Или Вы можете помещать источник данных на сервер, совместно
использовать его многими компьютерами в сети и легко поддерживать информацию
подключения в одном месте.
Файловый источник данных может также быть неразделяемым. Такой
источник данных дислоцируется на одном компьютере и указывает на машинный
источник данных. Вы можете использовать неразделяемые источники данных, чтобы
обратиться к существующим источникам данных машины из файловых источников
данных.
Если Вы хотите соединяться с системы A с системой B с
именем пользователя myuser и паролем mypassword, надо:
На системе "B":
На системе "A":
Вы можете также использовать довольно простой HOWTO с http://www.phphelp.com/article/4p1.php.
Подробности на MS KB Article(Q260558) по адресу http://support.microsoft.com/default.aspx?scid=kb;EN-US;q260558.
Также убедитесь, что имеете самый современный файл ctl3d32.dll в
системном каталоге.
Информацию по объединению подключений смотрите на http://support.microsoft.com/default.aspx?scid=kb;EN-US;q169470.
- Если Вы используете MS Access 2000, может быть необходимо установить самый
новый (версия 2.6 или выше) Microsoft
MDAC (Microsoft Data Access
Components) с http://www.microsoft.com/data.
- Вы должны также получить и применить Microsoft Jet 4.0 Service Pack 5
(SP5) с http://support.microsoft.com/support/kb/articles/Q239/1/14.ASP.
Это устранит некоторые случаи, в которых столбцы отмечены как
#deleted# в Access. Обратите внимание, что если Вы используете
MySQL Version 3.22, Вы должны применить заплату MDAC и
использовать MyODBC 2.50.32, 2.50.34 или выше.
- Установите последнюю версию
MySQL с http://www.mysql.com/downloads/index.html.
- Установите последнюю версию
MyODBC 3.51 или
MyODBC с http://www.mysql.com/downloads/api-myodbc.html.
- Для всех версий Access Вы должны включить опцию
Return matching
rows в MyODBC (3.51)
- Теперь запустите работу с Access как внешний интерфейс для сервера
MySQL через MyODBC
или MyODBC 3.51.
Вы не можете экспортировать таблицу или сделать запрос к базе данных MySQL,
если Вы не установили драйвер MyODBC или MyODBC
3.51.
Чтобы экспортировать таблицу из Access в MySQL:
- В окне Database (это то самое окно, которое появляется в Access, когда Вы
открываете базу данных или проект Access, оно отображает ярлыки для создания
новых объектов базы данных и открытия существующих объектов):
- Щелкните по имени
таблицы или запроса и затем из
меню File выберите Export.
- В окне
Export Object Type введите имя объекта, а в окне Save
As Type нажмите на ODBC Databases().
- В диалоге
Export введите имя для файла (или используйте
предложенное имя), затем нажмите на OK.
- Появится окно Select Data Source: оно вносит в список определенные
источники данных для любых ODBC-драйверов, установленных на Вашем компьютере.
Нажмите File Data Source или Machine Data Source, затем дважды щелкните по
источнику данных
MyODBC или MyODBC 3.51, в который
Вы хотите экспортировать информацию.
Microsoft Access свяжется с сервером MySQL через этот источник
данных и экспортирует новые таблицы и/или данные.
- Откройте базу данных или переключитесь на окно Database для открытой базы
данных.
- Чтобы импортировать таблицы, в меню
File укажите Get
External Data и выберите Import. Чтобы связывать таблицы,
в меню File укажите на Get External Data и выберите Link
Tables.
- В диалоговом
Import (или Link) в блоке Files Of
Type выберите ODBC Databases(). Диалоговое окно Select Data
Source вносит в список определенные источники данных для любых ODBC-драйверов,
установленных на Вашем компьютере. Нажмите File Data Source или Machine Data
Source и дважды щелкните по источнику данных MyODBC или
MyODBC 3.51.
- Если источник данных ODBC, который Вы выбрали, требует чтобы Вы входили в
систему, введите Ваши логин и пароль (дополнительная информация может также
требоваться), и затем нажмите
OK.
- Microsoft Access свяжется с сервером
MySQL через ODBC
data source и отобразит список таблиц, которые Вы можете импортировать
(import) или привязать (link).
- Нажмите на каждую таблицу, которую Вы хотите импортировать или связать, а
затем выберите
OK. Если Вы связываете таблицу, а она не имеет
индекса, который уникально идентифицирует каждую запись, то Microsoft Access
отображает список полей в связанной таблице. Нажмите на поле или на комбинацию
полей, которые уникально идентифицируют каждую запись, а затем на
OK.
Конечно. Используйте следующую процедуру, чтобы рассмотреть или обновить
связи, когда структура или расположение связанной таблицы изменились. Linked
Table Manager вносит в список пути ко всем в настоящее время связанным
таблицам.
Чтобы посмотреть или обновить запись:
- Откройте базу данных, которая содержит связи с таблицами.
- В меню
Tools укажите Add-ins и выберите
Linked Table Manager.
- Выберите переключатель для таблиц, чьи связи Вы хотите обновить.
- Нажмите OK, чтобы обновить связи.
Microsoft Access подтвердит успешную регенерацию или, если таблица не была
найдена, отобразит диалоговое окно Select New Location of <имя
таблицы>, в котором Вы можете определять новое расположение таблицы. Если
несколько выбранных таблиц передвигались в новое расположение, которое Вы
определяете, Linked Table Manager ищет все выбранные таблицы и модифицирует все
связи.
Чтобы сменить путь для набора связанных таблиц:
- Откройте базу данных, которая содержит связи с таблицами.
- В меню
Tools укажите Add-ins и выберите
Linked Table Manager.
- Выберите
Always Prompt For A New Location.
- Выберите переключатель для таблиц, чьи связи Вы хотите изменить, а затем
нажмите
OK.
- В диалоговом окне
Select New Location of <имя таблицы >
определите новое расположение, нажмите Open, а затем
OK.
Если вставленные или модифицируемые записи показываются как
#DELETED# в Access:
- Если Вы используете MS Access 2000, может быть необходимо установить самый
новый (версия 2.6 или выше) Microsoft
MDAC (Microsoft Data Access
Components) с http://www.microsoft.com/data.
- Вы должны также получить и применить Microsoft Jet 4.0 Service Pack 5
(SP5) с http://support.microsoft.com/support/kb/articles/Q239/1/14.ASP.
Это устранит некоторые случаи, в которых столбцы отмечены как
#deleted# в Access. Обратите внимание, что если Вы используете
MySQL Version 3.22, Вы должны применить заплату MDAC и
использовать MyODBC 2.50.32, 2.50.34 или выше.
- Для всех версий Access Вы должны включить опцию
Return matching
rows в MyODBC (3.51). Для Access 2.0 Вы
должны дополнительно включить опцию Simulate ODBC 1.0.
- Вы должны иметь timestamp во всех таблицах, которые Вы хотите
модифицировать. Для максимальной мобильности рекомендуются TIMESTAMP(14) или
простой TIMESTAMP вместо разных версий TIMESTAMP(X).
- Вы должны иметь первичный ключ в таблице. Если это не так, новые или
модифицируемые строки могут обнаруживаться как #DELETED#.
- Используйте только поля DOUBLE с плавающей точкой. Access не понимает поля
single с плавающей точкой.
- Если Вы связываете таблицу через MyODBC, которая имеет BIGINT как один из
столбцов, то результаты будут отображаться как #DELETED#. Решение:
- Создайте еще один фиктивный столбец с типом данных TIMESTAMP,
предпочтительно с типом TIMESTAMP(14).
- Проверьте опцию 'Change BIGINT columns to INT' в опциях диалога
подключения в ODBC DSN Administrator
- Удалите связь с таблицей из Access и пересоздайте ее.
- Это все еще отображает предыдущие записи как #DELETED#, но новые или
модифицируемые записи будут отображаться правильно.
Проверьте параметр Return Matching Rows диалога настройки DSN
или укажите параметр подключения OPTION=2.
Это странная проблема Access 97, ее уже нет в Access 2000 или в 2002. Вы
можете решить проблему, обновив драйвер MyODBC до MyODBC 3.51.02 или выше.
В большинстве случаев это может быть решено, делая одно из следующего:
- Добавьте первичный ключ для таблицы, если его еще нет.
- Добавьте timestamp-столбец, если его еще нет.
- Используйте только поля double с плавающей точкой. Некоторые программы
могут некорректно обрабатывают single-поля с плавающей точкой.
Если вышеупомянутое не помогает, Вы должны сделать файл трассировки
MyODBC и попробовать вычислить, что пошло не так.
Обратитесь к интерактивному справочнику на http://office.microsoft.com/ru-ru/assistance/CH062526191049.aspx.
Конечно, есть. Список доступных инструментальных средств есть на странице
конверторов: http://www.mysql.com/.
Выключите следующие три параметра (или задайте в строке подключения
OPTION=2059):
- Don't optimize column width (1),
- Return Matching Rows (2),
- Allow BIG Results (8) и
- Use compressed protocol (2048).
Это потому, что выражение COUNT(*) возвращает BIGINT и ADO не
может работать с такими величинами. Установите опцию, чтобы обработать BIGINT
как INT в MyODBC (option=16384).
Методы ADO GetChunk() и AppendChunk() не работают
так, как от них ожидается, когда расположение курсора определено как
adUseServer. Но все работает с применением
adUseClient.
Простой пример можно найти на http://www.dwam.net/iishelp/ado/docs/adomth02_4.htm.
Вы можете использовать свойство ADO RecordsAffected. Для
получения большего количества информации относительно использования метода
execute, обратитесь к ресурсу http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthcnnexecute.asp.
Простые примеры использования ADO, DAO и RDO с VB есть по адресам:
Если у Вас есть хорошие примеры применения ADO/DAO/RDO или соображения по
этим вопросам, напишите на myodbc@lists.mysql.com.
Подробная информация по доступу к MySQL через ASP с использованием MyODBC
есть по следующим адресам:
Это проблема Access 97 и происходит она когда Ваша таблица состоит из полей с
типами TEXT или VARCHAR. Вы можете обойти эту ошибку, обновив MyODBC до версии
3.51.02 или выше.
Есть статья по настройке на http://dbforums.com/showthread.php?threadid=174934.
Да. MyODBC 3.51 поддерживает динамический,
"только вперед" и
статический типы курсора.
Из-за проблем эффективности, драйвер не поддерживает это свойство по
умолчанию. Можно его включить, определяя параметр опции подключения как
OPTION=32 или проверяя опцию Enable
Dynamic Cursor из настройки DSN.
Можно. Если Вы находите, что что-то не работает с MyODBC 3.51, но работает с
MyODBC 2.50, напишите об этом на myodbc@lists.mysql.com.
Работает. Это было проверено с провайдерами Microsoft .NET, список которых
можно найти на: http://www.mysql.com/products/myodbc/manual.html#MyODBC_With_.NET.
Предостережение: при использовании ODBC.NET с MyODBC, при
выборке пустой строки (нулевой длины) это начинает давать исключительную
ситуацию SQL_NO_DATA. Вы можете получить заплатку для этого с http://support.microsoft.com/default.aspx?scid=kb;EN-US;q319243.
MyODBC был проверен со следующими прикладными программами:
- MS Access 95, 97, 2000 и 2002,
- C++-Builder, Borland Builder 4,
- Centura Team Developer (Gupta SQL/Windows),
- ColdFusion (на Solaris и NT с svc pack 5),
- Crystal Reports,
- DataJunction,
- Delphi,
- ERwin,
- MS Excel,
- iHTML,
- FileMaker Pro,
- FoxPro,
- Notes 4.5/4.6,
- MS Visio Enterprise 2000,
- Vision,
- Visual Objects,
- Visual Interdev,
- SBSS,
- Perl DBD-ODBC,
- Paradox,
- Powerbuilder,
- Powerdesigner 32 bit,
- MS Visuaal C++
- Visual Basic и
- ODBC.NET через CSharp (C#), VB и C++.
- Data Architect (
http://thekompany.com/products/dataarchitect)
- SQLExpress for Xbase++ (
http://www.SQLExpress.net)
- Open Office (
http://www.openoffice.org)
- Star Office (
http://wwws.sun.com/software/star/staroffice/6.0/index.html)
Если Вы знаете о любых других прикладных программах, которые работают с
MyODBC, пожалуйста, напишите об этом на myodbc@lists.mysql.com.
5.6 Coldfusion и MyODBC
Файл mydsn.dll должен использоваться, чтобы формировать и
удалять DSN-файл системного реестра для драйвера MyODBC в прикладных программах
Coldfusion. Чтобы сформировать DLL, Вам понадобятся VC++ 6.0 и окружение для
компилятора C++, указывающее место дислокации файла CFAPI header,
cfx.h. Также добавьте путь include для Вашей среды:
\cfusion\cfx\include
Чтобы использовать mydsn.dll, Вы должны использовать
администратор CFX Coldfusion, чтобы зарегистрировать заказной тэг
CFX_MYDSN. Вы имеете две функции: ADD добавляет DSN, а
REMOVE удаляет. Чтобы добавить запись, Вы используете следующий
синтаксис:
<CFX_MYDSN ACTION="ADD" DSN="DSN=DSNname"
SERVER="SERVER=ServerNameOrIPAddress" DATABASE="DATABASE=DBname"
USERNAME="UID=UserName" PASSWORD="PWD=UserPassword" PORT="PORT=3307"
OPTION="OPTION=12">
Обратите внимание, что OPTION здесь задает два параметра:
Trace MyODBC (4) и Allow Big Results (8), так что в
сумме 4+8 = 12.
Чтобы удалить DSN-запись, Вы должны использовать:
<CFX_MYDSN ACTION="REMOVE" DSN="DSN=DSNname">
Чтобы работать правильно, Ваша среда нуждается в пакете MDAC 2.0 или выше.
содержание назад вперед