MySQL

:: DEVELOPER ZONE

Login / Register

  • MySQL.com
  • Developer Zone
  • Partners
  • Online Shop
  • Downloads
  • Documentation
  • Forums
  • Lists
  • Bugs
  • Events
  • User Groups
  • Guilds
  • Blogs
  • Support
  • Resources
  • Books
  • FAQ

Справочное руководство по MySQL 4.0. :: 8 Интерфейсы для MySQL :: 8.4 Интерфейс C для MySQL :: 8.4.1 Типы данных C API

  • Overview
  • MySQL Reference Manual
  • MaxDB Documentation
  • Connectors

Search the MySQL manual:


  • Справочное руководство по MySQL 4.0.

  • 8.4 Интерфейс C для MySQL
  • 8.4.1 Типы данных C API
  • 8.4.2 Обзор функций интерфейса C
  • 8.4.3 Описание функций интерфейса C
  • 8.4.4 Описания функций C, связанных с потоками
  • 8.4.5 Описания функций C, доступных во встраиваемом сервере
  • 8.4.6 Основные вопросы и проблемы в использовании интерфейса C
  • 8.4.7 Сборка клиентских программ
  • 8.4.8 Как создать клиентскую программу с потоками
  • 8.4.9 libmysqld, встраиваемая библиотека сервера MySQL

Get the MySQL Language Reference and MySQL Administrator's Guide from MySQL Press!


Additional languages

  • German


Learn about new MySQL releases, technical articles, events and more.

Subscribe to the monthly MySQL Newsletter!


Previous / Next / Up / Table of Contents

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_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.

Top / Previous / Next / Up / Table of Contents

© 1995-2005 MySQL AB. All rights reserved.

  • About MySQL
  • Careers
  • Site Map
  • Contact Us
  • Legal
  • Privacy Policy
  • Trademark Info
  • No Software Patents!