Для облегчения построения клиентских приложений 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.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. MySQL and C
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. MySQL и язык С | Все о MySQL. MySQL and C. Новые возможности |