(mysql.info.gz) C API datatypes
Info Catalog
(mysql.info.gz) C
(mysql.info.gz) C
(mysql.info.gz) C API function overview
22.2.1 C API Data types
-----------------------
`MYSQL'
This structure represents a handle to one database connection. It
is used for almost all MySQL functions.
`MYSQL_RES'
This structure represents the result of a query that returns rows
(`SELECT', `SHOW', `DESCRIBE', `EXPLAIN'). The information
returned from a query is called the _result set_ in the remainder
of this section.
`MYSQL_ROW'
This is a type-safe representation of one row of data. It is
currently implemented as an array of counted byte strings. (You
cannot treat these as null-terminated strings if field values may
contain binary data, because such values may contain null bytes
internally.) Rows are obtained by calling `mysql_fetch_row()'.
`MYSQL_FIELD'
This structure contains information about a field, such as the
field's name, type, and size. Its members are described in more
detail here. You may obtain the `MYSQL_FIELD' structures for each
field by calling `mysql_fetch_field()' repeatedly. Field values
are not part of this structure; they are contained in a
`MYSQL_ROW' structure.
`MYSQL_FIELD_OFFSET'
This is a type-safe representation of an offset into a MySQL field
list. (Used by `mysql_field_seek()'.) Offsets are field numbers
within a row, beginning at zero.
`my_ulonglong'
The type used for the number of rows and for
`mysql_affected_rows()', `mysql_num_rows()', and
`mysql_insert_id()'. This type provides a range of `0' to
`1.84e19'.
On some systems, attempting to print a value of type `my_ulonglong'
will not work. To print such a value, convert it to `unsigned
long' and use a `%lu' print format. Example:
printf ("Number of rows: %lu\n", (unsigned long) mysql_num_rows(result));
The `MYSQL_FIELD' structure contains the members listed here:
`char * name'
The name of the field, as a null-terminated string.
`char * table'
The name of the table containing this field, if it isn't a
calculated field. For calculated fields, the `table' value is an
empty string.
`char * def'
The default value of this field, as a null-terminated string.
This is set only if you use `mysql_list_fields()'.
`enum enum_field_types type'
The type of the field. The `type' value may be one of the
following:
*Type Value* *Type Description*
`FIELD_TYPE_TINY' `TINYINT' field
`FIELD_TYPE_SHORT' `SMALLINT' field
`FIELD_TYPE_LONG' `INTEGER' field
`FIELD_TYPE_INT24' `MEDIUMINT' field
`FIELD_TYPE_LONGLONG' `BIGINT' field
`FIELD_TYPE_DECIMAL' `DECIMAL' or `NUMERIC' field
`FIELD_TYPE_FLOAT' `FLOAT' field
`FIELD_TYPE_DOUBLE' `DOUBLE' or `REAL' field
`FIELD_TYPE_TIMESTAMP' `TIMESTAMP' field
`FIELD_TYPE_DATE' `DATE' field
`FIELD_TYPE_TIME' `TIME' field
`FIELD_TYPE_DATETIME' `DATETIME' field
`FIELD_TYPE_YEAR' `YEAR' field
`FIELD_TYPE_STRING' `CHAR' field
`FIELD_TYPE_VAR_STRING' `VARCHAR' field
`FIELD_TYPE_BLOB' `BLOB' or `TEXT' field (use
`max_length' to determine the
maximum length)
`FIELD_TYPE_SET' `SET' field
`FIELD_TYPE_ENUM' `ENUM' field
`FIELD_TYPE_NULL' `NULL'-type field
`FIELD_TYPE_CHAR' Deprecated; use `FIELD_TYPE_TINY'
instead
You can use the `IS_NUM()' macro to test whether a field has a
numeric type. Pass the `type' value to `IS_NUM()' and it will
evaluate to TRUE if the field is numeric:
if (IS_NUM(field->type))
printf("Field is numeric\n");
`unsigned int length'
The width of the field, as specified in the table definition.
`unsigned int max_length'
The maximum width of the field for the result set (the length of
the longest field value for the rows actually in the result set).
If you use `mysql_store_result()' or `mysql_list_fields()', this
contains the maximum length for the field. If you use
`mysql_use_result()', the value of this variable is zero.
`unsigned int flags'
Different bit-flags for the field. The `flags' value may have zero
or more of the following bits set:
*Flag Value* *Flag Description*
`NOT_NULL_FLAG' Field can't be `NULL'
`PRI_KEY_FLAG' Field is part of a primary key
`UNIQUE_KEY_FLAG' Field is part of a unique key
`MULTIPLE_KEY_FLAG' Field is part of a non-unique key
`UNSIGNED_FLAG' Field has the `UNSIGNED' attribute
`ZEROFILL_FLAG' Field has the `ZEROFILL' attribute
`BINARY_FLAG' Field has the `BINARY' attribute
`AUTO_INCREMENT_FLAG' Field has the `AUTO_INCREMENT'
attribute
`ENUM_FLAG' Field is an `ENUM' (deprecated)
`SET_FLAG' Field is a `SET' (deprecated)
`BLOB_FLAG' Field is a `BLOB' or `TEXT'
(deprecated)
`TIMESTAMP_FLAG' Field is a `TIMESTAMP' (deprecated)
Use of the `BLOB_FLAG', `ENUM_FLAG', `SET_FLAG', and
`TIMESTAMP_FLAG' flags is deprecated because they indicate the
type of a field rather than an attribute of its type. It is
preferable to test `field->type' against `FIELD_TYPE_BLOB',
`FIELD_TYPE_ENUM', `FIELD_TYPE_SET', or `FIELD_TYPE_TIMESTAMP'
instead.
The following example illustrates a typical use of the `flags'
value:
if (field->flags & NOT_NULL_FLAG)
printf("Field can't be null\n");
You may use the following convenience macros to determine the
boolean status of the `flags' value:
*Flag Status* *Description*
`IS_NOT_NULL(flags)'True if this field is defined as
`NOT NULL'
`IS_PRI_KEY(flags)'True if this field is a primary key
`IS_BLOB(flags)' True if this field is a `BLOB' or
`TEXT' (deprecated; test
`field->type' instead)
`unsigned int decimals'
The number of decimals for numeric fields.
Info Catalog
(mysql.info.gz) C
(mysql.info.gz) C
(mysql.info.gz) C API function overview
automatically generated byinfo2html