|
Программирование >> Программный интерфейс приложений
Если в этом случае требуется подюхючить математическую библиотеку, введите изменения в значение LIBS, добавив в конец -Im: LIBS = -L/usr/local/lib/mysql -Imysqlclient -Im Если требуются другие библиотеки, такие как -Isocket -Insl, их тоже добавьте в параметр LIBS. С помощью makefile можно перестраивать профамму после внесения изменений в какой-либо из исходных файлов, вводя make. Это проще и влечет за собой меньще ощибок, чем при вводе длинной командной сфОКИ дсс. Clienti - подключение к серверу Наша первая клиентская программа MySQL - самая простая. Она подключается к серверу, отключается от него и завершает работу. Само по себе это не имеет смысла, но для того, чтобы работать с базой данных, надо к ней подключиться. Эта операция будет использоваться чаще всего во всех создаваемых вами клиентских программах. Кроме того, эта задача позволяет нам начать знакомство с процессом программирования клиентов с самой простой задачи. В дальнейшем мы будем наращивать функциональность программ по методу от простого к сложному. Исходный текст нашей первой клиентской профаммы содержится в од-ном-единственном файле clienti. с: /* clienti.с */ ♦include <stdio.h> ♦include <mysql.h> ♦define def host name NULL /* узел, к которому производится подключение (умолчание = localhost)*/ ♦define def user name NULL /* имя пользователя (умолчание = ваше имя регистрации в системе) */ ♦define def password NULL /* пароль (умолчание = отсутствует) */ ♦define def db name NULL /*база данных (умолчание = отсутствует)*/ MYSQL *conn; /* указатель на дескриптор соединения */ main (int argc, char *argv[]) { conn = mysql init (NULL); mysql real connect ( conn, /* указатель на дескриптор соединения */ def host name, /* узел, к которому осуществляется подключение*/ def user name, /* имя пользователя */ def password, /* пароль */ def db name, /* используемая база данных */ О, /* порт (используется значение по умолчанию) */ NULL, /* разъем (используется значение по умолчанию) */ 0); /* флаги (отсутствуют) */ mysqI close (conn); exit(0);} Исходный файл начинается со строк, подключающих заголовки stdio.h и mysql.h. Клиент MySQL может включать и больше файлов заголовков, но это является допустимым минимумом. Умолчание значенвй имен узла, пользователя базы данных и пароля прописываются прямо в коде. Позже эти значения будут параметризованы для того, чтобы бьша возможность указывать их в конфигурационных файлах или в командной строке. Функция main о чстанавливает и разрывает соединение с сервером. Установка соединения с сервером является процессом, который можно разделить на два этапа 1. Вызов функции mysql init () ДЛЯ получения дескриптора соединения. Это структура, содержащая информацию о соединении. Переменные этого типа называются дескрипторами соединения. При передаче значения null функции mysql init (), эта функция размещает переменную, инициализирует ее и возвращает указатель на нее. 2. Вызов функции mysqlrealconnect О ДЛЯ установки соединения с сервером. Функция mysql real connect () принимает очень много параметров. Указатель на дескриптор соединения. Он не может быть равен null , а должен представлять собой значение, возвращенное функцией mysql init (). Имя узла cepsepa. Если в качестве имени узла указано null или узел localhDst , клиент подключится к серверу, запущенному на местном >зле через стандартный разъем ОС UNIX. Если в качестве имени узла указано имя узла или IP-адрес узла - клиент подключится к указанному узлу, используя подключение TCP/IP. Это справедливо и для операционной системы Windows с одним исключением, что вместо разъема ОС UNIX используется подключение по протоколу TCP/IP. (В ОС Windows NT при указании в качестве имени узла значения null до использования протскола TCP/IP делается попытка использовать поименованный канал.) Имя пользоттеля и пароль. Если имя имеет значение null , клиентская библиотека посылает на сервер имя, с которым вы регистрировались. Если пароль имеет значение null , он не посылается. Номер порта и файл разъема. Они равны О и null , чтобы указать клиентской библиотеке воспользоваться значениями по умолчанию. При этом эти значения должны быть определены таким образом, чтобы соединение осуществлялось непосредственно с нужным узлом. Детальнее об этом можно узнать в описании функции mysql real connect О В приложении Е, Программный интерфейс приложений С . Значения флагов. Это значение равно 0. Это значит, что не будет использоваться никаких специальных опций соединения. Эти опции детально описываются в функции mysql real connect () в приложении Е. Профаммный интерфейс приложений С . Для отключения соединения передайте указатель на дескриптор соединения функции mysql close (). Дескриптор соединения, автоматически размещенный функцией ту sql init (), теперь автоматически отменяется функцией mysqlclose (). Это приводит к прекращению соединения. Для того чтобы работать с clienti, откомпилируйте и отредактируйте связи, а затем запустите ее, просто выполнив команду: % clienti Эта профамма подключается к серверу, разрывает соединение и за-верщает работу. Не слищком много, но это только начало. И тут очевидны два явных недостатка. в Клиентская профамма не диагностирует ощибки. Поэтому невозможно сказать, работает ли она вообще. ПарамефЫ соединения (имя узла, пользователя и т.д.) прописаны непосредственно в коде. Конечно, лучще дать возможность пользователю задавать эти парамефы в конфигурационном файле или прямо в командной строке. Это не самые сложные задачи, и они будут решены на следующих этапах. Client2 - добавление диагностики ошибок Второй клиент аналогичен первому, но он уже сможет обрабатывать ошибочные ситуации, возникающие при установлении соединения. Достаточно часто можно прочитать в книгах по профаммированию о том, что диагностика ошибок отдается на откуп читателю для упражнений в программировании. Давайте посмофим правде в глаза: профаммирование диагностики ошибок - очень нудное дело. Но автор придерживается другого мнения. Клиентские профаммы должны реагировать на возникновение ошибок и реагировать на них соответствующим образом. Все вызываемые функции возвращают значения, свидетельствующие о том или ином исходе операции.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |