Для облегчения построения клиентских приложений MySQL, компания MySQL AB предоставляет C API-интерфейс, который расширяет возможности низкоуровневого ин­терфейса на большинство задач, затрагивающих взаимодействие с сервером SQL: подклю­чение к базе данных, выполнение запроса, обработка результирующего набора и обработка ошибок. Этот C API-интерфейс реализован с помощью следующих двух компонентов:
■ файл заголовка mysql.h, содержащий объявления структур и функций;
■ библиотека MySQL, libmysqlclient (для UNIX) или mysqlclient.lib (для Windows), которая, собственно, и содержит C-функции.

Особый подход
Создание клиентов MySQL, работающих под управлением ОС Windows, подразумевает еще несколько дополнительных этапов. Более подробная информация о проблемах построения приложений под управлением ОС Windows, представлена по адресу http//www.mysql.com/doc/en/Windows_client_compiling.html.
При необходимости компилировать клиенты MySQL на платформе Windows, потребуется и третий компонент:
■ файл заголовка my_global.h, содержащий дополнительные определения, необходимые для Windows.
Все эти файлы включены в стандартный архив с исходными текстами MySQL или двоичными файлами, а также с двоичными RPM-файлами MySQL.
■ При использовании архивов (если MySQL устанавливается в /usr/local/ mysql), C-библиотеку для MySQL можно найти в каталоге /usr/local/mysql/ lib, а файл заголовка - в /usr/local/mysql/include.
■ При инсталляции MySQL из RPM-файлов, библиотека должна находиться в каталоге /usr/lib/mysql/, а файл заголовка - в /usr/include/mysql/.
Для компилятора C расположение этих файлов задается с помощью параметров -L и -I, а для редактора связей - местоположение библиотеки MySQL указывается параметром -lmysqlclient.
Обучение на примерах
Большая часть исходного дистрибутива MySQL написана на ЯП C, и его исходные тексты можно получить бесплатно. Посмотрите в подкаталог client/ исходного дистрибутива MySQL, в котором содержится исходный код таких утилит MySQL, как mysqldump, mysqlimport и клиентской программы mysql.
Наилучший способ освоения MySQL C API - это написать простенькую клиентскую программу, откомпилировать ее и запустить на выполнение. Откройте свой любимый текстовый редактор и введите следующий исходный текст.
Листинг 19.2.
#include <stdio.h> #include <mysql.h> int main () 
{
/* объявление структур и переменных */ MYSQL mysql; MYSQL_RES *result; MYSQL_ROW row;
/* инициализация структуры MYSQL */
mysql_init(&mysql);
/* подключение к базе данных */
mysql_real_connect(&mysql, "localhost", "john", "doe", "db1", 0, NULL, 0);
/* выполнение запроса */
mysql_query(&mysql, "SELECT title, author FROM books"); /* получение результирующего набора */ result = mysql_store_result(&mysql); /* обработка результирующего набора */ while((row = mysql_fetch_row(result)))
{
fprintf (stdout, "%s - %sn", row[0], row[1]);
}
/* очистка */
mysql_free_result(result); mysql_close(&mysql);
}
После того как весь текст будет введен, сохраните это в файле (назовем его sam-ple.c) и откомпилируйте его.
Листинг 19.3.
[user@host]$ /usr/bin/gcc sample.c -o sample.bin -
I/usr/local/mysql/include
-L/usr/local/mysql/lib -lmysqlclient -lz
Параметр -lmysqlclient сообщает редактору связей о необходимости использования в своей работе библиотеки libmysqlclient, а параметры -I и -L сообщают компилятору, где искать файлы заголовков MySQL и библиотеки. Параметр -o сообщает, какое имя файла будет присвоено самой исполняемой программе. При отсутствии этого аргумента, GCC по умолчанию присваивает имя a.out.