|
Программирование >> Создание клиентов mysql
Клиентские функции 353 Она представляет собой оболочку функции mysql real quer), вызывая функцию strlen {) для определения длины запроса. Если в запросе содержится двоичная строка, необходимо обратиться к функции mysql real query () напрямую, сообщив ей реальную длину запроса. Функция mysql query () выполняет одиночный запрос. Символ точки с запятой в конце строки не нужен. За этой функцией должен следовать вызов функции mysqlstoreresult () илиmysql use result (). В случае успешного выполнения запроса функция возвращает нуль, иначе - ненулевое значение. Применение этой функции демонстрируется во многих примерах данной главы. mysql read queryjresult() Эта функция извлекает результаты запроса, посланного ранее функцией mysql send query(): int mysql read query result (MYSQL *mysql) В случае успешного выполнения запроса функция возвращает нуль, иначе - код ошибки. С помощью этих двух функций - mysql read query result () и inysql send query () - можно организовать обработку запросов в фоновом режиме. Запрос посылается серверу, и пока этот запрос обрабатывается, выполняются другие действия (листинг 15.11). ttinclude <stdio.h> #include <mysql/mysql.h> in t argc, char *argv[]) MYSQL *mysql; MYSQL RES *result; MYSQL ROW row; const char *query = SELECT * FROM user ; ulong lengths; uint num fields, i; mysql = mysql init(NULL); mysql real connect(mysql, localhost , freetrade , , freetrade , 0, NULL, 0) ; mysql send query(mysql, query, strlen(query)); Имитация других действий. Получение результатов запроса. if{!mysql read query result (mysql) result = mysql store result(mysql) ; nim fields = mysql num fields(result); while(row = mysql fetch row(result)) { lengths = mysql fetch lengths(result) ; for(i =0; i < num fields; i++) printf( [%.*s] , (int) lengths[i], row[i] ? rowfi] : NULL ); printf( \n ); mysql free result(result); mysql close(mysql); mysqljealjconnectO Эта функция устанавливает соединение с сервером MySQL: MYSQL * mysql real connect( MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, uint port, const char *unix socket, uint clientflag) Она заменяет функцию mysql connecM ), использовавшуюся в предыдущих версиях MySQL. Как минимум, ей необходимо передать структуру MYSQL, проинициали-зированную функцией mysql iniM ) Остальные аргументы можно задать равными NULL. В качестве аргумента host может присутствовать доменное имя или IP-адрес. Значение NULL соответствует локальному узлу. Функция пытается подключиться к локальному узлу, используя или именованные каналы, если они поддерживаются в операционной системе. Если указан IP-адрес, соединение устанавливается по протоколам TCP/IP. Значение NULL в качестве имени пользователя соответствует текущему пользователю, запустившему программу. Пароль предоставляется в незашифрованном виде (функция сама выполняет шифрование). Если аргумент swd равен NULL, пароль будет пустым. sleep(3); Клиентские функции 355 АргуменЬ определяет стандартную базу данных. Аргумент port задает номер порта TCP/IP. В случае нулевого значения будет использован стандартный порт 3306. Аргумент unix socket должен содержать путь к файл ета или именованного канала. Аргумент client flag представляет собой битовое поле, в котором задаются различные опции (табл. 15.7). Некоторые из них перекрывают опции, заданные в функцииmysql options(). Константа CLIENT COMPRESS CLIENT FOUND ROWS Директива Сжимать данные, передаваемые между клиентом и сервером Сообщать число найденных записей, а не число измененных записей CLIENT IGNORE SPACE Разрешить пробелы между именем функции и открывающей скобкой CLIENT INTERACTIVE Разрывать соединение по истечении интервала тайм-аута, заданного в переменное e timeout, a не wait timeout CLIENT NO SCHEMA CLIENT ODBC CLIENT SSL He разрешать синтаксис 1шя БД.гшя тпа&1ицъгсмя ста/ища Работать с клиентом по протоколу ODBC Шифровать соединение с помощью протокола SSL В табл. 15.8 перечислены коды ошибок, генерируемые функцией mysql real connect В случае успешного завершения функция возвращает указатель на структуру, содержащую описание соединения. При возникновении ошибки возвращается NULL. Описание Команды выполнялись в неправильном порядке Сервер не отвечает Во время выполнения запроса пропала связь с сервером ошибка ER ACCESS DENIED ERROR Имяпользователя илипароль неверны ER BAD DB ERROR Имя базыданных не распознано ER DBACCESS DENIED ERROR Пользователю отказано в доступе ER UNKNOWN COM ERROR Команда не реализована ER WRONG DB NAME Имя базы данных слишком длинное Константа CR COMMANDS OUT OF SYNC CR SERVER GONE ERROR CR SERVER LOST CR UNKNOWN ERROR
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |