

Для реализации работы с MySQL из Delphi я использую ZeosLib. Универсальный набор бесплатных компонентов и библиотек для работы с такими СУБД как MSSQL, MySQL, Firebird, PostgreSQL, Oracle и другими. Адекватной альтернативы пока не нашел, хотя наверняка есть и другие библиотеки. Естественно рассматриваю в рамках официально бесплатного программного обеспечения.
Организация работы с ZeosLib очень похожа например на работу с компонентами IBX. Преимуществом на мой взгляд является универсализация методов работы с различными типами баз данных. Хотя конечно если пользоваться только Firebird, то можно использовать например FIBPlus (отличная библиотека но платная).
Также т.к. ZeosLib является проектом с открытым исходным кодом — можно изменять его по своему усмотрению и свободно использовать в своих проектах, в том числе коммерческих.
Так например выглядит простейший запрос на вставку с использованием компонента TZQuery:
ZQuery.SQL.Text := 'INSERT INTO table (table.id) VALUES (1)';
try
ZQuery.ExecSQL;
except
on E: Exception do
begin
Application.MessageBox(PChar(E.Message), 'Ошибка транзакции!', MB_ICONERROR);
// Либо возбуждаем исключение для дальнейшей обработки
end;
end;
Естественно TZQuery должен быть связан с TZConnection, который в свою очередь должен быть настроен и подключен к базе данных.
Настройка TZConnection. Основными настройками являются (на примере подключения к MySQL):
- Database — имя базы данных, к которой необходимо подключиться.
- HostName — ip адрес сервера на котором находится база данных (например localhost, если сервер базы данных запущен непосредственно на локальном компьютере).
- LibraryLocation — путь к библиотеке для работы с базой данных, для MySQL используется libmySQL.dll.
- LoginPrompt — отключите это свойство, если не хотите, чтобы компонент запрашивал пароль каждый раз при подключении к базе данных.
- Password — пароль для подключения к БД.
- Port — порт подключения к базе данных, для MySQL это по умолчанию 3306.
- Protocol — версия протокола для подключения к БД. Для MySQL наиболее актуальной является версия протокола mysql-5, хотя естественно все зависит от версии СУБД с которой вы работаете.
- User — имя пользователя с которым будем подключаться к БД.
Кстати, с расположением библиотеки libmySQL.dll у меня возникла проблема, т.к. путь к ней прописывается в свойстве LibraryLocation, то соответственно при запуске с другого компьютера этого пути может не существовать. А библиотека из папки с приложением почему то не подхватывалась. Решить проблему достаточно просто, нужно скопировать libmySQL.dll в папку с приложением, а на событие BeforeConnect TZConnection добавить:
ZConnection.LibraryLocation := ExtractFilePath(Application.ExeName) + ‘\libmySQL.dll’;
Теперь TZConnection при подключении к базе данных всегда будет обращаться к библиотеке libmySQL.dll расположенной в папке вашего приложения.