Copyright (C) 2000-2012 |
GNU Info (mysql.info)C API datatypesC 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 |