Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / MySQL / Интерфейсы для MySQL /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Интерфейс C для MySQL - Программирование от RIN.RU
Интерфейс C для MySQL



Типы данных C API


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

Возвращает число десятичных знаков для числовых полей.




<<<  НазадВперед  >>>
 1  2  3  4  5  6 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Интерфейс PHP API для MySQL

Интерфейс Perl API для MySQL

Поддержка ODBC в MySQL

Интерфейс C для MySQL (окончание)

Интерфейсы C++ и не только

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь