GNU Info

Info Node: (mysql.info)C API datatypes

(mysql.info)C API datatypes


Next: C API function overview Prev: C Up: C
Enter node , (file) or (file)node

C API Datatypes
---------------

`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 below.  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 below:

`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 meaning*
     `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'  String (`CHAR' or `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 or not 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 meaning*
     `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)
     `BLOB_FLAG'          Field is a `BLOB' or `TEXT'
                          (deprecated)
     `TIMESTAMP_FLAG'     Field is a `TIMESTAMP' (deprecated)

     Use of the `BLOB_FLAG', `ENUM_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', or
     `FIELD_TYPE_TIMESTAMP' instead.

     The example below 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:

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


automatically generated by info2www version 1.2.2.9