(个人整理)MysqlCAPI.

25.2.1.?C API数据类型

MYSQL

该结构代表1个数据库连接的句柄。几乎所有的MySQL函数均使用它。不应尝试拷贝MYSQL结构。不保证这类拷贝结果会有用。

MYSQL_RES

该结构代表返回行的查询结果(SELECT, SHOW, DESCRIBE, EXPLAIN)。在本节的剩余部分,将查询返回的信息称为“结果集”。

MYSQL_ROW

这是1行数据的“类型安全”表示。它目前是按照计数字节字符串的数组实施的。(如果字段值可能包含二进制数据,不能将其当作由Null终结的字符串对待,这是因为这类值可能会包含Null字节)。行是通过调用mysql_fetch_row()获得的。

MYSQL_FIELD

该结构包含关于字段的信息,如字段名、类型和大小。这里详细介绍了其成员。通过重复调用mysql_fetch_field(),可为每个字段获得MYSQL_FIELD结构。字段值不是该结构的组成部份,它们包含在MYSQL_ROW结构中。

MYSQL_FIELD_OFFSET

这是MySQL字段列表偏移量的“类型安全”表示(由mysql_field_seek()使用)。偏移量是行内的字段编号,从0开始。

my_ulonglong

用于行数以及mysql_affected_rows()、mysql_num_rows()和mysql_insert_id()的类型。该类型提供的范围为0~1.84e19。

在某些系统上,不能打印类型my_ulonglong的值。要想打印这类值,请将其转换为无符号长整数类型并使用%lu打印格式,例如:

printf ("Number of rows: %lu\n", (unsigned long) mysql_num_rows(result));

下面列出了MYSQL_FIELD结构包含的成员:

·???????? char * name
字段名称,由Null终结的字符串。如果用AS子句为该字段指定了别名,名称的值也是别名。
·???????? char * org_name
段名称,由Null终结的字符串。忽略别名。
·???????? char * table
包含该字段的表的名称,如果该字段不是计算出的字段的话。对于计算出的字段,表值为空的字符串。如果用AS子句为该表指定了别名,表的值也是别名。
·???????? char * org_table
表的名称,由Null终结的字符串。忽略别名。
·???????? char * db
字段源自的数据的名称,由Null终结的字符串。如果该字段是计算出的字段,db为空的字符串。
·???????? char * catalog
catalog名称。该值总是"def"。
·???????? char * def
该字段的默认值,由Null终结的字符串。仅当使用mysql_list_fields()时才设置它。
·???????? unsigned long length
字段的宽度,如表定义中所指定的那样。
·???????? unsigned long max_length
用于结果集的字段的最大宽度(对于实际位于结果集中的行,最长字段值的长度)。如果使用mysql_store_result()或mysql_list_fields(),它将包含字段的最大长度。如果使用mysql_use_result(),该变量的值为0。
·???????? unsigned int name_length
名称的长度。
·???????? unsigned int org_name_length
org_name的长度。
·???????? unsigned int table_length
表的长度。
·???????? unsigned int org_table_length
org_table的长度。
·???????? unsigned int db_length
db的长度。
·???????? unsigned int catalog_length
catalog的长度。
·???????? unsigned int def_length
def的长度。
·???????? unsigned int flags

用于字段的不同“位标志”。标志的值可以有0个或多个下述位集合:

标志值标志描述NOT_NULL_FLAG字段不能为NULLPRI_KEY_FLAG字段是主键的组成部分UNIQUE_KEY_FLAG字段是唯一键的组成部分MULTIPLE_KEY_FLAG字段是非唯一键的组成部分UNSIGNED_FLAG字段具有UNSIGNED属性ZEROFILL_