Организация работы MS Access-приложения с MySQLИсточник: Msadimisign db_maker
Если Вы выбрали MS Access как платформу для своих приложений, но Вас не устраивает mdb-файл в качестве сервера базы данных -- эта статья для Вас. Я хочу предложить Вам использовать в качестве сервера баз данных сервер MySQL. Моя программа в этом году окончательно переползла на MySQL, и я хочу поделиться некоторыми нюансами организации взаимодействия MS Access-приложения и сервера баз данных MySQL Почему MySQL? Но MS Access может взаимодействовать и с другими SQL-серверами, и Microsoft подталкивает нас к взаимодействию с MS SQL Server, снабжая нас для этого всем необходимым. Но я выбрал "мускул", руководствуясь следующими причинами. -- Официальная бесплатность для разработчика Этапы организации работы MS Access-приложения с MySQL 1. Установить на сервере MySQL Рассмотрим эти этапы. Изложение я буду вести по принципу sapienti sat (умному достаточно), и прошу прощения у тех, кто не смог извлечь из моих инструкций пользу -- постараюсь ответить на письма (адрес Вы найдёте на странице http://db-maker.narod.ru/contactrus.htm). Итак... Установка на сервере MySQL Предполагаем, что сервер у Вас на Windows. Если это не так -- Вам нужно обращаться к документации (http://dev.mysql.com/doc/refman/4.1/en/installing.html). Для Windows есть три типа дистибутива -- Windows Essentials (x86) -- дистрибутив для Windows 2000 и выше Запускается MySQL под WIndows двумя способами: Запуском файла mysqld.exe Настройка поддержки кириллицы для MySQL При работе MySQL под Windows Вы можете конфигурировать его параметры с помощью файла мy.ini Документация (http://dev.mysql.com/doc/refman/5.1/en/mysql-config-wizard-editing.html) утверждает, что его лучше размещать в папке Windows (C:\WINDOWS или C:\WINNT), но у меня он прекрасно работает в корневой папке сервера MySQL (G:\MySQL). Приведу пример конфигурационного файла мy.ini, позволяющий подерживать кириллицу. В этом файле позволяются комментарии, начинающиеся с # -- чем я и воспользуюсь для отметки строк, отвечающих за кириллицу. Вам придётся изменить в этом файле пути для своего сервера, о чём смотрите комментарии. Итак, конфигурационный файл мy.ini. [client] #Конфигурационные параметры для сервера MySQL server-id = 1 # Конфигурационные параметры для программы резервного копирования # Конфигурационные параметры для программы-клиента mysql.exe [isamchk] [myisamchk] [mysqlhotcopy]
Создать базу данных Вашего приложения Подключение к базе данных осуществляется от имени пользователя. После инсталляции на сервере присутсвует один пользователь root@localhost с пустым паролем (в ранних версиях был ещё один -- root@'%', но в последних версиях его уже нет. Думаю, по соображениям безопасности). Так что первіе действия Вам придётся осуществить на сервере. Входите в командную строку Windows (Start/Пуск → Run/Выполнить → cmd), устанавливаете текущим каталогом подкаталог bin каталога MySQL (в моём случае это G:\mysql\bin): и набираете команду подключения к MySQL G:\mysql\bin>mysql -uroot Хост и порт приняли значения по умолчанию -- соответственно localhost и 3306, пароля у root пока нет (сейчас мы это исправим). И появилось приглашение MySQL вводить команды SQL: Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> Первое, что мы проделаем -- изменим пароль root: это очевидное требование безопасности. mysql> update mysql.user set password=Password('ВашПароль') where user='root' and host='localhost'; mysql> flush privileges; mysql> Пароль изменён. Но наш сеанс идёт ещё под старым паролем. Прервём наш сеанс и зайдём уже с новым паролем. mysql> quit; G:\mysql\bin>mysql -uroot -p Если мы нигде не ошиблись -- мы снова видим приглашение MySQL и начинаем работу. Предполагается, что приложение работает в локальной сети, IP-адреса в которой начинаются с 192.168 (в противном случае надо скорректировать нижеследующую инструкцию grant). mysql> /*создадим пользователя, под которыми будет заходить приложение MS Access */ mysql> /*Создадим базу данных нашего приложения*/ mysql> /*Создаём таблицы*/ Создавать таблицы в командной строке MySQL слишком утомительно. Поэтому Вам лучше выбрать один из двух оптимальных путей. Если у Вас есть база данных в mdb-файле, воспользуйтесь инструкциями флеш-ролика по адресу http://www.mysql.com/products/tools/migration-toolkit/tutorials/AccessMigrationTutorial.html G:\mysql\bin>mysql -uroot -p ИмяБазыДанных<Путь к файлу с инструкциями create table У Вас будет запрошен пароль и, если Вы нигде не ошиблись, таблицы будут созданы Установка драйвер ODBC на все машины, на которых работает Ваше приложение Идёте на страницу http://dev.mysql.com/downloads/, ищете раздел Connector/ODBC - MySQL ODBC driver, выбираете рекомендуемый, т.е. Generally Available (GA) release (на 8 февраля 2007 это Connector/ODBC 3.51 ), и скачиваете инсталлятор. Запускаете инсталлятор, никаких значимых для установки вопросов он не задаст. О каких-либо проблемах с установкой этого драйвера я даже не слышал. В случае MS Access 2003 -- установка обновления для корректной работы ODBC MS Access 2003 имеет дефект работы с ODBC под Windows 2000 (под XP не пробовал, но, насколько мне известно, ситуация идентична). Лечится это установкой пакета обновлений Jet 4.0 SP8 для Windows 2000 Этот пакет имеет версии для различных языковых версий Windows (обратите внимание -- не MS Access, а именно Windows). Скажем, для русскоязычной версии Windows 2000 пакет обновлений Jet 4.0 SP8 находится по адресу Изменить код приложения -- для автоматического подключения таблиц Вручную создавать источник ODBC и подключать к нему таблицы -- это не методы профессиональной разработки. Приведу примеры кода VBA для создания источника ODBC и подключения к нему таблиц Создание источника ODBC DBEngine.RegisterDatabase ИмяИсточникаODBC, ИмяODBC-драйвера, True, СтрокаПараметровПодключения Строка параметров подключения может содержать следующие параметры (см. http://dev.mysql.com/doc/refman/5.0/en/myodbc-configuration-connection-parameters.html): user -- Логин пользователя Пример Dim connect as String Обратите внимание на параметр stmt: именно он позволяет MS Access корректно поддерживать кириллицу. Удаление всех связанных таблиц For Each TD In CurrentDb.TableDefs Drop_linked_tables = True Exit Function End Function Подключение таблиц MySQL через ODBC 'Подключение таблиц MySQL через ODBC Function StartConnectMySQL(ByVal login As String,ByVal odbcName As String,ByVal db As String) As Boolean Call Drop_linked_tables 'Удалили все связанные таблицы Dim newTD As TableDef Dim ws As Workspace Dim query As String Do While Not rst.EOF StartConnectMySQL = True Exit Function End Function Заключение Мы рассмотрели весь процесс перехода приложения MS Access на взаимодействие c MySQL. Результат окупает усилия, которые потребуются от вас на этом пути: Вы получите приложение, где уже решены следующие задачи: Защита базы данных от повреждения пользователями -- Разработка view, stored procedures, triggers Надеюсь, я чем-то помог Вам на пути к этим возможностям... |