9.1.1 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 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 | 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 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.
Add your own comment.