MySQL- Руководство разработчика

Типы данных в DELPHI API


TMYSQL Эта структура представляет дескриптор на одно подключение базы данных. Это используется почти для всех функций MySQL. TMYSQL_RES Эта структура представляет результат запроса, который возвращает строки (SELECT, SHOW, DESCRIBE, EXPLAIN). Информация, возвращенная из запроса, названа набором результатов в остатках от этого раздела. TMYSQL_ROW Это тип-безопасное представление одной строки данных. Это в настоящее время выполнено как массив байтовых строк. Вы не можете обрабатывать их как обычные строки с нулевым символом в конце, если значения поля могут содержать двоичные данные потому, что такие значения могут содержать нулевые символы в себе. Строки получены, вызывая функцию mysql_fetch_row(). TMYSQL_FIELD Эта структура содержит информацию относительно поля, например, имя поля, тип и размер. Члены описаны более подробно ниже. Вы можете получать структуры TMYSQL_FIELD для каждого поля, неоднократно вызывая mysql_fetch_field(). Значения полей не являются частью этой структуры, они содержатся в структуре TMYSQL_ROW. TMYSQL_FIELD_OFFSET Это тип-безопасное представление смещения в списке полей MySQL. Используются в вызове mysql_field_seek(). Смещения представляют собой номера полей внутри строки, начиная с нуля. Tmy_ulonglong Тип, используемый для числа строк и для функций mysql_affected_rows(), mysql_num_rows() и mysql_insert_id(). Этот тип обеспечивает диапазон от 0 до 1.84e19. На некоторых системах попытка печатать значение типа Tmy_ulonglong не будет работать. Чтобы отпечатать такое значение, преобразуйте его к типу longint.

Структура TMYSQL_FIELD содержит члены, перечисленные ниже:

name:pchar; Имя поля, как строка с нулевым символом в конце. table:pchar; Имя таблицы, содержащей это поле, если это не расчетное поле. Для расчетных полей, значение table представлено пустой строкой. def:pchar; Значение по умолчанию этого поля, как строка с нулевым символом в конце. Это установлено только, если Вы используете mysql_list_fields(). typ:TFIELD_TYPES; Тип поля. Значение typ может быть один из следующего:



Значение Typ Используемый тип
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
<
length:longword; Ширина поля, как она определена в описании таблицы. max_length:longword; Максимальная ширина поля для набора результатов (длина самого длинного поля для строк в наборе результатов). Если Вы используете mysql_store_result() или mysql_list_fields(), это содержит максимальную длину поля. Если Вы используете mysql_use_result(), значение этой переменной нулевое. flags:longword; Различные биты задают флажки для поля. Значение 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
BLOB_FLAG Поле имеет тип BLOB или TEXT
TIMESTAMP_FLAG Поле имеет тип TIMESTAMP
Использование BLOB_FLAG, ENUM_FLAG и TIMESTAMP_FLAG не рекомендуется потому, что они указывают тип поля, а не атрибут типа. Предпочтительно проверить field.typ вместо FIELD_TYPE_BLOB, FIELD_TYPE_ENUM или FIELD_TYPE_TIMESTAMP. Пример ниже иллюстрирует типичное использование flags: if (field.flags & NOT_NULL_FLAG) write("Field can't be null"); Вы можете использовать следующие макрокоманды, чтобы определить булево состояние значения flags:
IS_NOT_NULL(flags) Истина, если это поле определено как NOT NULL
IS_PRI_KEY(flags) Истина, если это поле первичный ключ
IS_BLOB(flags) Истина, если это поле BLOB или TEXT
decimals:longword; Число допустимых десятичных чисел для числовых полей.


Содержание раздела