Подключение к MySQL при помощи FireDAC

Набор компонентов FireDAC впервые появился в RAD Studio XE5. За прошедшее с тех пор время он уже успел зарекомендовать себя как надёжное и функциональное средство для организации взаимодействия приложений с широким спектром СУБД. В их число входит и MySQL.

Способы подключения

Существует два способа реализовать подключение к MySQL посредством FireDAC, но все они так или иначе связаны со «стандартной» библиотекой libmysql.dll.

  • Расположить библиотеку libmysql.dll в произвольной папке и прописать путь к ней в переменной окружения path или файле FDDrivers.ini;
  • Использовать конфигурирование драйвера с помощью компонента FDPhysMySQLDriverLink.

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

В тоже время он подразумевает выполнение дополнительных действий связанных с настройкой операционной системы или использованием дополнительного конфигурационного файла. При этом в переменной path и FDDrivers.ini необходимо указывать абсолютные пути.

Всё это создаёт дополнительные сложности и ограничивает пригодность данного способа. Поэтому его применяют довольно редко и пользоваться им не рекомендуется.

Второй способ гораздо более универсальный.

Он состоит в том, что на форму, фрейм или модуль данных добавляется специальный компонент FDPhysMySQLDriverLink и в его свойстве VendorLib указывается путь к библиотеке libmysql.dll.

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

FDPhysMySQLDriverLink.VendorLib:='C:\libmysql.dll';

Последнее практически полностью решает проблему, связанную с использованием абсолютных путей и позволяет без особых сложностей разместить libmysql.dll в папке программы, что даёт дополнительные преимущества.

Из недостатков. Соединение с БД можно установить только после того как путь к библиотеке libmysql.dll задан. Иначе будет выдано исключение.

Важно помнить. СУБД MySQL имеет 32 и 64-разрядную версию. Их библиотеки libmysql.dll не совместимы между собой. При этом программа установки выбирает устанавливаемую версию автоматически исходя из разрядности операционной системы.Вследствие этого, независимо от выбранного способа реализации подключения, необходимо строго соблюдать разрядность.

64-разрядное приложение сможет работать только с 64-разрядной библиотекой (работа с 32-разрядной библиотекой не поддерживается и возбуждает исключение). Соответственно, 32-разрядное приложение может подключиться к MySQL только при помощи 32-разрядной библиотеки и никак иначе.

Алгоритм действий
Для первого способа (переменная path, файл FDDrivers.ini)

Создаём папку и помещаем в неё библиотеку libmysql.dll.

Прописываем абсолютный путь к ней в переменной окружения path или файле FDDrivers.ini.

Синтаксис для файла FDDrivers.ini приведён ниже.

[MySQL57]
BaseDriverID=MySQL
VendorLib=c:\MySQL\libmysql.dll

Настраиваем компонент FDConnection (см. ниже);

Активируем соединение:

FDConnection.Connected:=true;

Для второго способа (компонент FDPhysMySQLDriverLink)

Размещаем библиотеку libmysql.dll в любом подходящем месте (лучше всего в папке с программой);

Прописываем в свойстве VendorLib компонента FDPhysMySQLDriverLink абсолютный путь к библиотеке:

FDPhysMySQLDriverLink.VendorLib:='C:\MyProgramDirectory\libmysql.dll';

Настраиваем компонент FDConnection (см. ниже);

Активируем соединение

FDConnection.Connected:=true;

Настройка компонента FDConnection

Указываем в параметрах соединения (группа свойств Params) следующие обязательные значения:

Параметр Значение
DriverID MySQL
Password Пароль для доступа к MySQL
Port Порт для работы с MySQL. По умолчанию 3306.
Server Имя сервера, на котором установлен MySQL. Для локального подключения localhost.
UserName Имя пользователя MySQL
Наиболее частые ошибки
Не удаётся найти указанный файл

Пример:

[FireDAC][Phys][MySQL]-314. Cannot load vendor library [libmysql.dll or libmysqld.dll]. He удается найти указанный файл.

Hint: check it is in the PATH or application EXE directories, and has x86 bitness..

Возможные причины:

  • Неправильно указан путь к библиотеке libmysql.dll;
  • Путь указан правильно, но библиотека libmysql.dll отсутствует.

Способы исправления:

  • Указать правильный путь;
  • Разместить библиотеку libmysql.dll в соответствующей папке.
Library has unsupported architecture

Пример:

[FireDAC][Phys][MySQL]-314. Cannot load vendor library [C:\Users\Erop\Documents\Embarcadero\Studio\Projects\MySQLIntergration\Win64\Debug\libmysql.dll]. Library has unsupported architecture [x64]. Required [х86].

Hint: check it is in the PATH or application EXE directories, and has x86 bitness..

Возможные причины:

  • Несовпадение разрядности приложения и используемой библиотеки libmysql.dll.

Способы исправления:

  • Использовать библиотеку libmysql.dll в соответствии с разрядностью приложения.
Источники
  1. Configuring Drivers (FireDAC) (Официальная документация);
Комментарии
  1. С сервером на FreeBSD будет коннектиться?

  2. А, почему нет? Если всё правильно настроено с подключением проблем быть не должно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *