MYSQL
Данная структура представляет дескриптор соединения с базой данных. Используется почти во всех функциях MySQL.
MYSQL_RES
Эта структура содержит
результат запроса,
возвратившего строки
(SELECT, SHOW,
DESCRIBE, EXPLAIN).
Возвращенная из запроса
информация далее в этом разделе
называется результирующим
набором данных.
MYSQL_ROW
Является ``типобезопасным''
представлением данных одной
строки. В настоящее время этот
тип реализован как массив строк
с фиксированным количеством
байтов (их нельзя трактовать как
строки с нулевым символом в
конце, если величины полей могут
содержать двоичные данные,
поскольку они могут содержать
ноль байтов). Строки можно
получить вызовом функции
mysql_fetch_row().
MYSQL_FIELD
Данная структура содержит
информацию об отдельном поле
таблицы: имя поля, тип и его
размер. Элементы данной
структуры детально описаны в
этом разделе ниже. Для каждого
поля можно получить структуру
MYSQL_FIELD,
последовательно вызывая функцию
mysql_fetch_field(). Величины
полей не являются частью данной
структуры, они содержатся в
структуре MYSQL_ROW.
MYSQL_FIELD_OFFSET
``Типобезопасное'' представление
позиции поля в списке полей MySQL.
(используется функцией
mysql_field_seek()). Позиции
представляют собой номера полей
внутри строки, причем нумерация
начинается с нуля.
my_ulonglong
Данный тип используется для
возврата количества строк, а
также в функциях
mysql_affected_rows(),
mysql_num_rows() и
mysql_insert_id(). Этот тип
обеспечивает диапазон изменений
величин от 0 до 1.84e19. Может не
работать в некоторых системах
при выводе величины типа
my_ulonglong. Для вывода
подобной величины следует
преобразовать ее в тип unsigned
long и использовать формат
%lu. Пример:
printf (Количество строк: %lu\n", (unsigned long) mysql_num_rows(result));
Структура MYSQL_FIELD
содержит следующие перечисленные
ниже элементы:
char * name
Имя данного поля, заданное строкой с нулевым символом в конце.
char * table
Имя таблицы, содержащей это поле,
если оно невычисляемое. Для
полей, получаемых в результате
вычислений, величина
table представляет собой
пустую строку.
char * def
Значение по умолчанию этого
поля, заданное строкой с нулевым
символом в конце. Задается
только при использовании
функции mysql_list_fields().
enum enum_field_types type
Тип данного поля. Величина
type может быть одной из
следующих:
| Тип величины | Описание типа |
FIELD_TYPE_TINY |
Поле TINYINT
|
FIELD_TYPE_SHORT |
Поле SMALLINT
|
FIELD_TYPE_LONG |
Поле INTEGER
|
FIELD_TYPE_INT24 |
Поле MEDIUMINT
|
FIELD_TYPE_LONGLONG |
Поле BIGINT
|
FIELD_TYPE_DECIMAL |
Поле DECIMAL или NUMERIC
|
FIELD_TYPE_FLOAT |
Поле FLOAT
|
FIELD_TYPE_DOUBLE |
Поле DOUBLE или REAL
|
FIELD_TYPE_TIMESTAMP |
Поле TIMESTAMP
|
FIELD_TYPE_DATE |
Поле DATE
|
FIELD_TYPE_TIME |
Поле TIME
|
FIELD_TYPE_DATETIME |
Поле DATETIME
|
FIELD_TYPE_YEAR |
Поле YEAR
|
FIELD_TYPE_STRING |
Строка поля (CHAR или
VARCHAR) |
FIELD_TYPE_BLOB |
BLOB или TEXT поле
(используется
max_length для
определения максимальной
длинны) |
FIELD_TYPE_SET |
Поле типа SET
|
FIELD_TYPE_ENUM |
Поле типа ENUM
|
FIELD_TYPE_NULL |
Поле типа NULL
|
FIELD_TYPE_CHAR |
Не рекомендуется; лучше использовать
FIELD_TYPE_TINY
|
Можно использовать макрос
IS_NUM() для проверки,
является ли тип поля числовым. В
макросе IS_NUM() следует
указать величину type и,
если поле имеет числовой тип,
будет возвращено значение
TRUE:
if (IS_NUM(field->type))
printf("Field is numeric\n");
unsigned int length
Размер данного поля в том виде, в каком он указан в определении таблицы.
unsigned int max_length
Максимальный размер данного
поля в результирующем наборе
данных (длина самой большой
величины поля для строк в
текущем результирующем наборе
данных). При использовании
mysql_store_result() или
mysql_list_fields() данная
переменная содержит
максимальную длину для данного
поля. При использовании
mysql_use_result() значение
этой переменной равно нулю.
unsigned int flags
Различные двоичные флаги для
данного поля. Величина
flags может иметь ноль
или больше двоичных значений
следующего набора флагов:
| Значение флага | описание флага |
NOT_NULL_FLAG |
Поле не может содержать значение
NULL
|
PRI_KEY_FLAG |
Поле является частью первичного ключа |
UNIQUE_KEY_FLAG |
Поле является частью уникального ключа |
MULTIPLE_KEY_FLAG |
Поле является частью не уникального ключа |
UNSIGNED_FLAG |
Поле имеет атрибут UNSIGNED
|
ZEROFILL_FLAG |
Поле имеет атрибут ZEROFILL
|
BINARY_FLAG |
Поле имеет атрибут BINARY
|
AUTO_INCREMENT_FLAG |
Поле имеет атрибут AUTO_INCREMENT
|
ENUM_FLAG |
Поле имеет тип ENUM (не
рекомендуется) |
SET_FLAG |
Поле имеет тип SET (не
рекомендуется) |
BLOB_FLAG |
Поле имеет тип BLOB или
TEXT (не
рекомендуется) |
TIMESTAMP_FLAG |
Поле имеет тип TIMESTAMP (не
рекомендуется) |
Использование флагов
BLOB_FLAG, ENUM_FLAG,
SET_FLAG и
TIMESTAMP_FLAG не
рекомендуется, поскольку они
указывают скорее тип поля, чем
атрибут этого типа. Вместо этого
более предпочтительно
определять тип поля описанным
выше способом field->type
в отношении полей
FIELD_TYPE_BLOB,
FIELD_TYPE_ENUM,
FIELD_TYPE_SET или
FIELD_TYPE_TIMESTAMP. Следующий
пример иллюстрирует типичное
использование величины
flags:
if (field->flags & NOT_NULL_FLAG)
printf("Field can't be null\n");
Можно использовать следующие
возможности макросов для
определения булевого значения
величины flags:
| Статус флага | Описание |
IS_NOT_NULL(flags) |
Возвращает TRUE, если данное поле
определено как NOT
NULL
|
IS_PRI_KEY(flags) |
Возвращает TRUE, если данное поле является первичным ключом |
IS_BLOB(flags) |
Возвращает TRUE, если данное поле имеет
тип BLOB или
TEXT (не
рекомендуется; более
предпочтительно
field->type) |
unsigned int decimals
Возвращает число десятичных знаков для числовых полей.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
