Программирование >>  Программный интерфейс приложений 

1 ... 83 84 85 [ 86 ] 87 88 89 ... 264


Если в этом случае требуется подюхючить математическую библиотеку, введите изменения в значение 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 - добавление диагностики ошибок

Второй клиент аналогичен первому, но он уже сможет обрабатывать ошибочные ситуации, возникающие при установлении соединения. Достаточно часто можно прочитать в книгах по профаммированию о том, что диагностика ошибок отдается на откуп читателю для упражнений в программировании. Давайте посмофим правде в глаза: профаммирование диагностики ошибок - очень нудное дело. Но автор придерживается другого мнения. Клиентские профаммы должны реагировать на возникновение ошибок и реагировать на них соответствующим образом. Все вызываемые функции возвращают значения, свидетельствующие о том или ином исходе операции.



1 ... 83 84 85 [ 86 ] 87 88 89 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика