Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

MySQL. Библиотека профессионала - Аткинсон Л

..pdf
Скачиваний:
166
Добавлен:
24.05.2014
Размер:
10.41 Mб
Скачать

342 Глава Библиотека функций языка С

Эта функция заставляет сервер записывать отладочную информацию в журналь ный файл:

mysql_eof()

Эта устаревшая функция проверяет, достигнут ли конец результирующего набора записей:

my_bool *res)

Вместо нее предпочтительнее пользоваться mysql_fetch_row

mysql_errno()

Эта функция возвращает код ошибки последней операции:

*mysql)

Если ошибок не было, возвращается нуль. Список кодов ошибок и соответствую щих им сообщений приведен в приложении Г, "Коды ошибок MySQL".

В листинге 15.5 будет выдано следующее сообщение:

Query failed: (1064) You have an error in your SQL syntax near at

#include

int char

MYSQL

0, NULL,

Попытка выполнить неправильный запрос.

"SELECT FROM

"Query failed: (%d)

функции 343

mysql_error()

Эта функция воз вращает об ошибке, соответствующее последней опе рации:

char * *mysql)

Если ошибок не возвращается пустая строка. Список кодов ошибок и ветствующих им сообщений приведен в приложении Г, "Коды ошибок MySQL". При мер использования функции приводился в листинге 15.5.

Эта устаревшая функция добавляет к заданной строке символы обратной косой черты, что позволяет использовать строку в SQL инструкциях:

char *to, const char ulong length)

Эта функция игнорирует сведения о наборе символов. Вместо нее лучше пользо ваться mysql_real_escape_string

Эта функция извлекает информацию о столбцах таблицы результатов, по одному

MYSQL_FIELD *

В MySQL хранится внутренний указатель на текущий столбец. Этот указатель изме няется после каждой следующей операции выборки столбца. Когда столбцов не ся, возвращается NULL. Указатель сбрасывается в момент поступления нового запроса. Его можно также изменять вручную с помощью функцииield_seek

Функция возвращает структуру MYSQL_FIELD, описание которой было приведено выше. В режиме небуферизованного чтения размерность столбцов типа BLOB устанавливается равной 8 Кбайт, а не реальной размерности. Ес ли же результаты запроса заносятся в буфер, учитывается размерность самого боль шого значения столбца.

В листинге 15.6 с помощью функции отображается ин формация о каждом столбце таблицы tax.

<stdio.h>

char

MYSQL

344 Глава Библиотека функций языка

MYSQL_RES

MYSQL_FIELD

0, NULL,

"SELECT * FROM result

Получение информации о столбцах.

Value:

Эта функция возвращает структуру с информацией о заданном столбце таблицы результатов:

MYSQL_FIELD *

Нумерация столбцов начинается с нуля. В остальном данная функция аналогична функции ield

Эта функция извлекает информацию обо всех столбцах таблицы результатов и возвращает массив структур

MYSQL_FIELD * *res)

Определить общее количество столбцов в таблице позволяет функция mysql_ ields Программа, представленная в листинге 15.7, выводит данные о каж дом элементе массива столбцов.

#include <stdio.h> ttinclude

char

Клиентские функции 345

MYSQL MYSQL_RES

row; MYSQL_FIELD unsigned unsigned long unsigned int

0, NULL, 0)

"SELECT * FROM result

row

Получение информации о

lengths field

i

i++)

Value:

Эта функция возвращает массив, в котором указана размерность каждого столбца текущей

* *res)

Функция предпочтительнее, чем так как по следняя неправильно определяет длину двоичной строки. В случае ошибки, вызван ной наличием неправильного указателя, возвращается NULL.

Пример использования данной функции приводился в листинге 15.7.

Эта функция извлекает следующую запись из указанного набора:

*res)

При достижении конца набора в режиме буферизованного чтения возвращается NULL. В небуферизованном режиме значение NULL является как признаком конца на

346 Глава Библиотека функций языка С

бора, так и признаком ошибки. В этом случае необходимо проверить наличие ошибки с помощью функции mysql_errno

Возвращаемое значение можно трактовать как массив значений столбцов. Их чис

ло определяет функция

а функция

находит длину каждого столбца.

 

В листинге 15.8 запрашиваются значения трех столбцов таблицы user. Обратите внимание на функцию во внутреннем цикле. В ней проверяется реальная длина каждого столбца. С помощью оператора значения NULL преобразуются в строку "NULL". Указатель, содержащийся в массиве row, будет равен NULL, если зна чение в столбце отсутствует. Если же столбец соде ржит пустую строку, в массиве row будет находиться указатель на пустую строку.

#include <string.h>

char

MYSQL mysql;

row; MYSQL_FIELD unsigned int unsigned long unsigned int i;

char

"root", "mysql", 0, NULL,

"SELECT Host, User, Password FROM result

Просмотр

lengths

i

i++)

 

(int)

row[i]

row[i]

Клиентские функции 347

mysql_field_count()

Эта функция определяет количество столбцов, участвовавших в последней опера ции заданного сеанса:

unsigned *mysql)

Схожие действия выполняет функция которая в качестве аргумента принимает указатель на конкретную таблицу результатов.

mysql_field_seek()

Эта функция перемещает внутренний указатель на заданный столбец таблицы ре зультатов:

MYSQL_RES

MYSQL_FIELD_OFFSET

Первый столбец имеет нулевое смещение. Функция возвращает предыдущее зна чение указателя.

mysql_field_tell()

Эта функция возвращает значение внутреннего указателя полей:

*res)

mysql_free_result()

Эта функция освобождает память, занимаемую таблицей результатов запроса:

void *result)

По окончании работы с набором записей необходимо всегда освобождать память.

Эта функция определяет версию клиентской библиотеки, с которой ведется работа:

char *

Пример использования данной функции был приведен в листинге 15.3.

Эта функция возвращает строку, описывающую узел, с которым установлено единение:

char *

Пример использования данной функции был приведен в листинге 15.3.

348 Глава Библиотека ф ункций языка С

Эта функция определяет версию применяемого коммуникационного протокола:

Пример использования данной функции был приведен в листинге 15.3.

Эта функция определяет версию программы MySQL, установленной на сервере:

char * *mysql)

Пример использования данной функции был приведен в листинге 15.3.

Эта функция возвращает строку с описанием записей, измененных в ходе послед него запроса:

char *mysql)

Непустая строка возвращается лишь в том случае, в операции вставки (INSERT) или обновления (UPDATE) участвовала более чем одна запись. Например, если с помощью инструкции INSERT INTO в таблицу была добавлена одна запись, функция о вернет пустую строку. Непустая строка возвращается также в случае выполнения инструкций ALTER TABLE и LOAD DATA

mysql_init()

Эта функция инициализирует соединение:

MYSQL *

В качестве аргумента можно передать адрес существующей структуры MYSQL или NULL. Во втором случае функция выделит память под новую структуру. Для дения выделенной памяти предназначена

Эта функция возвращает последнее значение поля счетчика, использовавшееся в указанном сеансе:

Toжесамое значениевозвращается встроенной LAST_I NSERT_ID Если в последнем запросе не участвовало функция возвращает нуль.

Клиентские функции 349

mysql_kill()

Эта функция уничтожает поток, связанный с базой данных:

*mysql,

Список идентификаторов потоков можно получить с помощью инструкции SHOW PROCESSES или функции В случае неудачи функция mysql_kill возвращает нуль.

mysql_list_dbs()

Эта функция возвращает набор записей с именами всех баз данных:

* *mysql, const char *wild)

Аргумент wild может содержать неполное имя с метасимволами и что зволяет фильтровать результаты. Аналогичные действия выполняет инструкция SHOW DATABASES. He забывайте, что полученный набор записей необходимо удалить с по мощью функции ree_result

В листинге 159. выводится список баз данных, доступных пользователю root.

<string.h>

int

char

MYSQL mysql;

MYSQL_RES MYSQL_ROW row; MYSQL_FIELD unsigned long

"root", "mysql", 0, NULL,

result

Просмотр результатов.

while(row

lengths (int)

350 Глава Библиотека функций языка С

Эта функция возвращает набор записей с именами всех столбцов в указанной таб лице:

MYSQL_RES * MYSQL

const char *table, const char *wild)

Аргумент wild может содержать неполное имя с метасимволами и что по зволяет фильтровать результаты. Аналогичные действия выполняет инструкция SHOW COLUMNS. He забывайте, что полученный набор записей необходимо удалить с помо щью функции ree_result

Эта функция возвращает набор записей с идентификаторами всех потоков:

* *mysql)

Аналогичные действия выполняет инструкция SHOW Не забывайте, что полученный набор записей необходимо удалить с помощью функции mysql_

mysql_list_tables()

Эта функция возвращает набор записей с именами всех таблиц указанной базы данных:

MYSQL_RES * const char *wild)

Аргумент wild может содержать неполное имя с метасимволами и что по зволяет фильтровать результаты. Аналогичные действия выполняет инструкция SHOW TABLES. He забывайте, что полученный набор записей необходимо удалить с

щью функции ree_result

Эта функция определяет количество полей в указанном наборе записей:

unsigned

*res)

Эта функция определяет количество записей в указанном наборе:

*res)

Клиентские функции 351

mysql_options()

Эта функция задает параметры соединения до

как оно будет установлено:

MYSQL

option,

 

 

 

 

 

const char

*arg)

 

 

Функция

должна вызываться после

но до

 

Она вызывается по одному разу для каждого параметра

(табл. 15.6). В случае параметра

 

функции необходимо

передать указатель на беззнаковое целое число, приведенный к типу char

Константа

Тип аргумента

Директива

 

 

char

*

Немедленно выполнить ука

 

 

 

заннуюSQL инструкциюпри

 

 

 

первом или повторном под

 

 

 

ключении

 

MYSQL_OPT_COMPRESS

Heиспользуется

Сжимать данные, переда

 

 

 

ваемые между клиентом и

 

 

 

сервером

 

MYSQL_OPT_CONNECT_TIMEOUT

unsigned int *

Считать попытку

 

 

 

чения неудачной по

 

 

 

нииуказанногочисласекунд

MYSQL_OPT_NAMED_PIPE

He используется

Использовать

именован

 

 

 

ные каналы в Windows NT

MYSQL_READ_DEFAULT_FILE

char

*

Прочитать установки из ука

 

 

 

занного

 

 

 

 

гофайла,а не того, который

 

 

 

задан по умолчанию (напри

 

 

 

мер,

 

 

char

*

Прочитать установки из ука

 

 

 

занной группы

конфигура

 

 

 

ционного файла

 

Благодаря функции разработчики MySQL могут добавлять к программе новые параметры соединений, не модифицируя код функции real_connect Пример задания параметров приведен в листинге