П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 180123 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 78190 раз(а).

Учебник HTML.
Просмотров 75547 раз(а).

Руководство по PHP5.
Просмотров 46598 раз(а).

Хостинг через призму DNS.
Просмотров 53992 раз(а).

Подборка текстов стандартных документов.
Просмотров 46521 раз(а).

Учебник PHP - Самоучитель
Просмотров 52677 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 53275 раз(а).

Внешние атаки...
Просмотров 43076 раз(а).

Учебник PHP.
Просмотров 38654 раз(а).

SSI в примерах.
Просмотров 28589 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 8. Интерфейсы для MySQL
Пред.     След.

8.4. Интерфейс C для MySQL
8.4.1. Типы данных 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_BLOBBLOB или 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

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


Назад Начало Главы Начало Раздела Вперед

Пред. Глава След. Глава
Глава 7. Типы таблиц MySQL Начало Книги Глава 9. Расширение MySQL


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru