(mysql.info) c-api-datatypes
Info Catalog
(mysql.info) c
(mysql.info) c
(mysql.info) 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. You should not try to make
a copy of a `MYSQL' structure. There is no guarantee that such a
copy will be usable.
* `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' does 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. If the field
was given an alias with an `AS' clause, the value of `name' is the
alias.
* `char * org_name'
The name of the field, as a null-terminated string. Aliases are
ignored.
* `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. If the table was given an alias with an `AS' clause,
the value of `table' is the alias.
* `char * org_table'
The name of the table, as a null-terminated string. Aliases are
ignored.
* `char * db'
The name of the database that the field comes from, as a
null-terminated string. If the field is a calculated field, `db'
is an empty string.
* `char * catalog'
The catalog name. This value is always `"def"'.
* `char * def'
The default value of this field, as a null-terminated string. This
is set only if you use `mysql_list_fields()'.
* `unsigned long length'
The width of the field, as specified in the table definition.
* `unsigned long 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 name_length'
The length of `name'.
* `unsigned int org_name_length'
The length of `org_name'.
* `unsigned int table_length'
The length of `table'.
* `unsigned int org_table_length'
The length of `org_table'.
* `unsigned int db_length'
The length of `db'.
* `unsigned int catalog_length'
The length of `catalog'.
* `unsigned int def_length'
The length of `def'.
* `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 `MYSQL_TYPE_BLOB',
`MYSQL_TYPE_ENUM', `MYSQL_TYPE_SET', or `MYSQL_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.
* `unsigned int charset_nr'
The character set number for the field.
* `enum enum_field_types type'
The type of the field. The `type' value may be one of the
`MYSQL_TYPE_' symbols shown in the following table.
*Type Value* *Type Description*
`MYSQL_TYPE_TINY' `TINYINT' field
`MYSQL_TYPE_SHORT' `SMALLINT' field
`MYSQL_TYPE_LONG' `INTEGER' field
`MYSQL_TYPE_INT24' `MEDIUMINT' field
`MYSQL_TYPE_LONGLONG' `BIGINT' field
`MYSQL_TYPE_DECIMAL' `DECIMAL' or `NUMERIC' field
`MYSQL_TYPE_NEWDECIMAL' Precision math `DECIMAL' or `NUMERIC'
field (MySQL 5.0.3 and up)
`MYSQL_TYPE_FLOAT' `FLOAT' field
`MYSQL_TYPE_DOUBLE' `DOUBLE' or `REAL' field
`MYSQL_TYPE_BIT' `BIT' field (MySQL 5.0.3 and up)
`MYSQL_TYPE_TIMESTAMP' `TIMESTAMP' field
`MYSQL_TYPE_DATE' `DATE' field
`MYSQL_TYPE_TIME' `TIME' field
`MYSQL_TYPE_DATETIME' `DATETIME' field
`MYSQL_TYPE_YEAR' `YEAR' field
`MYSQL_TYPE_STRING' `CHAR' or `BINARY' field
`MYSQL_TYPE_VAR_STRING' `VARCHAR' or `VARBINARY' field
`MYSQL_TYPE_BLOB' `BLOB' or `TEXT' field (use
`max_length' to determine the
maximum length)
`MYSQL_TYPE_SET' `SET' field
`MYSQL_TYPE_ENUM' `ENUM' field
`MYSQL_TYPE_GEOMETRY' Spatial field
`MYSQL_TYPE_NULL' `NULL'-type field
`MYSQL_TYPE_CHAR' Deprecated; use `MYSQL_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 evaluates
to TRUE if the field is numeric:
if (IS_NUM(field->type))
printf("Field is numeric\n");
Info Catalog
(mysql.info) c
(mysql.info) c
(mysql.info) c-api-function-overview
automatically generated byinfo2html