Решил освоить для себя набор компонентов доступа к БД FireDac. Ранее работал с DBXpress, но время не стоит на месте, а FireDac оказался одним из лучших наборов компонент для доступа к БД. Но это мое личное мнение. Немного поискав информацию в сети, я понял, что лучшим ресурсом для изучения, как и всегда будет старая документация и новая, более полная документация. Она написана на английском языке, но, в принципе, для тех ,кто им владеет там все достаточно хорошо описано.Экспериментировать как и всегда я буду с БД MySQL так как на данный момент больше всего с ней знаком. В данном посте мы будем рассматривать один единственный вопрос.
Как подключиться к БД MySQL с помощью FireDAC?
Конкретно для этой БД в документации описан порядок подключения. Но есть один не очевидный нюанс из за которого я бился минут 40. Я подключался на windows машине и поэтому следовал след. информации из документации
Windows client software
FireDAC requires one of the following x86 or x64 libraries:
- the LIBMYSQL.DLL client library for connecting to MySQL server. Ideally, the version should be equal to the server version.
- the LIBMYSQLD.DLL embedded server library. See “MySQL Embedded server” chapter below.
You can take them from a server (details) installation Bin or Lib folders and put into a folder:
- listed in your PATH environment variable (for example, <Windows>\SYSTEM32);
- your application EXE folder;
- any other folder and specify in FireDAC\DB\ADDrivers.ini:
1 2 |
[MySQL] VendorLib= YourFolders \libmysql.dll |
Итак, нам нужен драйвер LIBMYSQL.DLL, чтобы подсоединиться к нашей БД. Если драйвера нет или он не той битности, то мы получим следующее сообщение об ошибке
Итак, для того, чтобы избежать этой ошибки, согласно документации, нужно проделать одно из трех действий
-Изменить переменную окружения, добавив туда файл с библиотекой
-Добавить библиотеку в папку с EXE
-Прописать изменения в FireDAC\DB\ADDrivers.ini
Почему-то не работало
У меня сработали все три способа (как ни странно), но почему-то не работало, если
-положить файл в C:\WINDOWS\System32
-прописать в FireDAC\DB\ADDrivers.ini секцию
1 2 |
[MySQL] VendorLib=C:\WINDOWS\System32\libmysql.dll |
Под срабатыванием я подразумеваю успешное подключение к БД
Как сделать, чтобы работало?
Работало, если положить файл в любую другую папку, например C:\MySQLDriver
-если добавить в переменную окружения C:\MySQLDriver
-либо в файл ADDrivers.ini добавить секцию
1 2 |
[MySQL] VendorLib=C:\MySQLDriver\libmysql.dll |
Где найти файл ADDrivers.ini ?
Первый способ (через реестр)
HKCU\Software\Embarcadero\FireDAC\DriverFile
После открытия файла DriverFile, у меня высветилась информация $(FDHOME)\FDDrivers.ini
Второй способ (напрямую)
1 |
C:\Users\Public\Documents\Embarcadero\Studio\FireDAC\FDDrivers.ini |
Какой драйвер использовать?
В принципе, насколько я понимаю, нужно использовать драйвер, согласно битности, у меня, например 64 битная windows, но тот файл LIBMYSQL.DLL, который был установлен вместе с MySQL почему-то отказывался работать. Находился он по адресу
1 |
C:\Program Files\MySQL\MySQL Server 5.5\lib\libmysql.dll |
Я его клал в С:\MySQLDriver, но все равно он отказывался работать. Выскакивала та же ошибка. Немного порывшись в сети я нашел другую версию библиотеки, с которой у меня все прекрасно заработало. Выкладываю её здесь, может кому-то понадобится.
Скачать файл libmysql.rar
Финальный алгоритм – как подключиться к MySQL при помощи FireDAC?
(алгоритм для дизайн тайм)
-Скачать подходящий драйвер LIBMYSQL.DLL можно по ссылке выше, либо с официального сайта
-Разместить его в любой папке, например C:\MySQLDriver
-Добавить в переменную окружения путь C:\MySQLDriver либо дописать секцию в файле ADDrivers.ini
1 2 |
[MySQL] VendorLib=C:\MySQLDriver\libmysql.dll |
-Разместить на форме проекта компонент FDConnection и 2 раза кликнуть на нём
-В поле Driver ID выбрать MySQL
-Заполнить прочие реквизиты подключения (Имя БД, логин, пароль, сервер – в моем случае был LOCAL, порт – по умолчанию 3306)
Как изменить переменную окружения?
Tools | Options | Enviroment Options | Enviroment Variables | Найти Path –> Далее Add Overwrite, добавить точку с запятой и путь, например C:\MySQLDriver
Как сохранить параметры подключения в IDE DELPHI Seattle?
В принципе, если мы будем работать с Design Time, то параметры подключения мы можем сохранить через
View | Data Explorer | FireDac | MySQL Server | Правой кнопкой мыши –> Add New Connection
Далее заполнение тех же параметров, что и в финальном алгоритме выше, только теперь, при создании нового подключения мы можем ссылаться на созданное через свойство ConnectionDefName