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 или выше.
содержание назад вперед