|
Программирование >> Программный интерфейс приложений
тель имеет общее представление о программировании на языке С, не являясь при этом экспертом. В главе изложен процесс разработки нескольких клиентских программ от простого к сложному. Сначала разрабатывается скелет программы, который не делает ничего, кроме подключения к серверу и отключения от сервера. Причина этого заключается в том, что несмотря на то, что клиентские программы написаны для выполнения разных задач, они и.меют одну общую функцию: функцию подключения к серверу. Разобьем процесс создания программы на несколько этапов. 1. Создание профаммного кода для подключения к базе данных и отключения от нее (clientl). 2. Добавление проверки на ощибки (client2). 3. Вьщеление кода подключения в отдельный модуль (clients). 4. Добавление возможности получения параметров подключения (узел, пользователь, пароль) во время работы (client4). Эта последовательность действий является достаточно общей, и ею можно воспользоваться для создания любой клиентской профаммы Сначала сделаем это, а после этого поразмыслим над тем, каким образом можно обрабатывать различные типы запросов. Сперва научимся обрабатывать жестко заданные операторы SQL, а потом разработаем профамму, которая позволит обрабатывать произвольные запросы. После этого вставим профаммный код, обрабатывающий запросы, в костяк для разработки другой профаммы (клиента), подобного клиенту mysql. Кроне тою, рассмотрим (и решим) белее общие проблемы, например, каким образом можно получить информахщю о структуре таблиц и хранить изображения в базе данных. В этой главе информация о функциях и типах данных клиентской библиотеки дана только по мере необходимости. Полный перечень функций и типов данных можно найти в приложении Е, Профаммный интерфейс приложений С . Эти примеры можно найти на Web-узле и зафузить. Дяя этого обратитесь к приложению А, Получение и инсталляция профаммного обеспечения . I Где можно найти примеры Самый распространенный вопрос где можно найти примеры клиентских программ, написанных на языке С? Конечно же, в этой книге Но иногда люди забывают, что сама дистрибуция СУБД MySQL содержит несколько клиентских программ (например mysql, mysqladmin и mysqldump), большинство из которых написано на С Исходные тексты дистрибуции доступны, поэтому СУБД MySQL уже сама по себе содержит примеры кода клиентских программ Поэтому, если это еще не было сделано, время от времени просматривайте дистрибуцию Клиентские программы СУБД MySQL общедоступны, поэтому их кодом свободно можно пользоваться в процессе создания своих собственных программ и в исходных текстах, приведенных как в этой главе, так и в дистрибуции СУБД MySQL, всегда можно что-нибудь позаимствовать для своих программ Для этого достаточно скопировать исходный текст из уже существующей программы и немного подкорректировать его Для того чтобы понять принцип работы клиентской программы, необходимо ознакомиться с материалом, изложенным в этой главе Но помните, что совсем необязательно все писать самому (Следует помнить, что одной из целей, преследуемых в этой главе, является возможность повторного использования исходных текстов ) Гораздо лучше воспользоваться результатами работы того, кто это уже когда-то делал Общая процедура создания клиентских программ Этот раздел содержит описание этапов компиляции и связывания программ, использующих клиентскую библиотеку СУБД MySQL. Набор команд, необходимых для построения клиентских программ в различных системах, несколько варьируется. Поэтому, возможно, вам понадобится немного видоизменить команды, предложенные здесь вашему вниманию. Однако это описание имеет общий характер, и его можно применить в процессе создания любой клиентской программы. Основные требования к системе Очевидно, что при программировании клиентских программ на языке С потребуется компилятор С В примерах, приведенных здесь, используется компилятор дсс. Кроме того, потребуется дополнение к исходным файлам. Файлы заголовков MySQL. Клиентская библиотека MySQL. Эти два компонента и составляют поддержку программирования клиента. Вероятно, они уже установлены в вашей операционной системе. В противном случае их надо получить. Здесь есть два варианта: если СУБД MySQL устанавливалась с исходной или двоичной дистрибуции, поддержка программирования клиентов должна быть установлена в процессе этой инсталляции. Если СУБД MySQL устанавливалась из RPM-файлов, эта поддержка не требуется, так как в таком случае установка производится с помощью соответствующего RPM-инстру-ментария. Получить справку о процессе установки файлов заголовков и библиотеки можно в приложении А, Получение и инсталляция программного обеспечения . Компилирование и редактирование связей клиентской программы Для успешной компиляции и редактирования связей клиентской программы необходимо определить путь к файлам заголовков СУБД MySQL и клиентскую библиотеку. Обычно они находятся не там, где хранятся такие файлы по умолчанию. Предположим, что файл заголовков и клиентскую библиотеку можно найти, используя путь /usr/local/include/mysql и /usr/local/lib/mysql. Для того чтобы указать компилятору, как можно найти файл заголовка, ему нужно указать аргумент -I/usr/local/include/mysql во время компилирования исходного файла в объектный файл. Например, можно воспользоваться следующей командной строкой: % gcc -с -I/usr/local/include/mysql myclient.c Для того чтобы указать редактору связей, как можно найти клиентскую библиотеку, ему нужно указать аргументы -L/usr/local/lib/mysql и -Imysqlclient ВО время редактирования связей объектного файла при создании исполняемого двоичного кода следующей командной строкой: % gcc -о myclient myclient.o -L/usr/local/lib/mysql -Imysqlclient Если клиентская программа состоит из нескольких объектных файлов, их все необходимо указать в командной строке. Если редактирование связей завершилось ошибкой из-за того, что редактор связей не смог найти функцию floor (), подключите математическую библиотеку, добавив в конец строки -Im: % gcc -о myclient myclient.o -L/usr/local/lib/mysql -Imysqlclient -Im Может потребоваться подключить таким же образом и другие библиотеки. Например, в системе Solaris может понадобиться -Isocket -Insl. Можно предположить, что уровень позволяет вам работать, избегая ввода командных строк с клавиатуры, и пользоваться командой make. Предположим, что ваш клиент myclient состоит из двух исходных файлов main, с И аих.с И файла заголовка myclient.h. Простейший файл Makefile может выглядеть следующим образом: СС = gcc INCLUDES = -I/usr/local/include/mysql LIBS = -L/usr/local/lib/mysql -Imysqlclient all: myclient main.о: main.с myclient.h $(CO -c $(INCLUDES) main.с aux.o: aux.c myclient.h ${CC) -c $(INCLUDES) aux.c myclient: main.о aux.o $ (CO -o myclient main.о aux.o $ (LIBS) clean: rm -f myclient main.о aux.o
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |