本节介绍除用于准备好语句的CAPI数据结构。有关后者的信息,请参阅第6.2节“C API准备的声明数据结构”。
此结构表示一个数据库连接的处理程序。它用于几乎所有MySQL函数。不要试图制作一个副本
mysql.
结构体。无法保证这样的副本将是可用的。这是一行数据的类型安全表示。它目前作为计数的字节字符串的数组实现。(如果字段值可能包含二进制数据,则无法将这些视为空终止字符串,因为此类值可能包含NULL字节内部。)通过呼叫获得行
mysql_fetch_row()
。此结构包含元数据:有关字段的信息,例如字段的名称,类型和大小。在本节后面将更详细地描述其成员。你可以获得
mysql_field.
通过致电的每个字段的结构mysql_fetch_field()
反复。字段值不是该结构的一部分;它们包含在一个mysql_row.
结构体。这是一个类型安全的偏移量到MySQL字段列表中。(使用
mysql_field_seek()
。)偏移量是行中的字段数字,从零开始。用于行数和用于的类型
mysql_affected_rows()
那mysql_num_rows()
, 和mysql_insert_id()
。这种类型提供了一系列0.
至1.84E19.
。使用此类型返回行计数的一些函数返回-1作为无符号值以指示错误或异常条件。您可以通过比较返回值来检查-1
(my_ulonglong)-1
(或者(My_ulonglong)〜0
,这是等同的)。在某些系统上,试图打印类型的值
my_ulonglong
不起作用。要打印这样的值,将其转换为毫无符号
并使用A.%鲁
打印格式。例子:printf(“行数:%lu \ n”,(unsigned long)mysql_num_rows(结果));
一个布尔类型,对于真实的值(非零)或假(零)。
这mysql_field.
结构包含以下列表中描述的成员。该定义主要适用于结果集的列,例如由此产生的列选择
陈述。mysql_field.
结构也用于提供元数据出去
和进出
从使用准备的存储过程返回的参数称呼
陈述。对于这样的参数,一些结构成员具有与列值的含义不同的含义。
互动地观看mysql_field.
结果集的成员值,调用mysql.司法- column-type-info
选项并执行一些示例查询。
字符*名称
字段的名称,作为空终止字符串。如果该领域被赋予别名
作为
条款,价值名称
是别名。对于过程参数,参数名称。char * org_name.
字段的名称,作为空终止字符串。别名被忽略了。对于表达式,该值是空字符串。对于过程参数,参数名称。
Char *表
包含此字段的表的名称,如果它不是计算的字段。对于计算的字段,
桌子
值是空字符串。如果从视图中选择列,则桌子
名称视图。如果表格或视图是给出的别名作为
条款,价值桌子
是别名。为一个联盟
,该值是空字符串。对于过程参数,过程名称。char * org_table
表的名称,作为空终止的字符串。别名被忽略了。如果从视图中选择列,则
org_table
名称视图。为一个联盟
,该值是空字符串。对于过程参数,过程名称。Char * DB.
该字段来自的数据库的名称,作为空终止的字符串。如果该字段是计算字段,
D b
是一个空字符串。为一个联盟
,该值是空字符串。对于一个过程参数,包含该过程的数据库的名称。CHAR *目录
目录名称。这个值始终是
“def”
。char * def.
此字段的默认值,作为空终止字符串。只有在使用时才设置
mysql_list_fields()
。毫无符号长的长度
场的宽度。这对应于显示长度,以字节为单位。
服务器确定
长度
在它生成结果集之前的值,因此这是能够从结果列中保存最大可能值的数据类型所需的最小长度,而不提前知道结果集的查询生成的实际值。对于字符串列,
长度
值在连接字符集上变化。例如,如果字符集是拉丁语
,单字节字符集,长度
A.价值选择'abc'
查询是3.如果字符集是UTF8MB4.
,一个多字节字符集,其中字符最多需要4个字节,长度
价值是12。unsigned long max_length.
结果集的字段的最大宽度(在结果集中实际的行的最长字段值的长度为字节数)。如果你使用
mysql_store_result()
或者mysql_list_fields()
,这包含字段的最大长度。如果你使用mysql_use_result()
,此变量的值为零。的价值
最长长度
是结果集中值的字符串表示的长度。例如,如果您检索a漂浮
柱子和柱子“最广“价值是-12.345.
那最长长度
是7(长度)'-12.345'
)。如果您使用的是准备好的陈述,
最长长度
默认情况下未设置,因为对于二进制协议,值的长度取决于结果集中的值的类型。(看第6.2节“C API准备的声明数据结构”。)如果你想要最长长度
值无论如何,启用stmt_attr_update_max_length.
选择mysql_stmt_attr_set()
呼叫时,将设置长度mysql_stmt_store_result()
。(看第6.4.3节“mysql_stmt_attr_set()”, 和第6.4.28节“mysql_stmt_store_result()”。)无符号int name_length.
长度
名称
。unsigned int org_name_length.
长度
org_name.
。无符号int table_length.
长度
桌子
。无符号int org_table_length.
长度
org_table
。unsigned int db_length.
长度
D b
。unsigned int catalog_length.
长度
目录
。unsigned int def_length.
长度
def
。无符号int标志
描述该字段的位标志。这
旗帜
值可以具有如下表所示的位集中的零个或多个。标志价值 旗帜描述 not_null_flag.
领域不能是 空值
pri_key_flag.
字段是主要键的一部分 unique_key_flag.
字段是唯一键的一部分 multime_key_flag.
字段是诺唯一键的一部分 unsigned_flag.
领域有 无符号
属性zerofill_flag.
领域有 Zerofill.
属性binary_flag.
领域有 二进制
属性auto_increment_flag.
领域有 自动递增
属性enum_flag.
领域是An. 枚举
set_flag.
领域是A. 放
blob_flag.
领域是A. 斑点
或者文本
(弃用)时间戳_FLAG.
领域是A. 时间戳
(弃用)num_flag.
字段是数字;请参阅下表的其他注释 no_default_value_flag.
字段没有默认值;请参阅下表的其他注释 其中一些标志表示数据类型信息,并与之结合使用或使用
mysql_type_
价值在XXX.
字段 - >类型
稍后描述的会员:num_flag.
表示列是数字。这包括具有类型的列mysql_type_decimal.
那mysql_type_newdecimal.
那mysql_type_tiny.
那mysql_type_short.
那mysql_type_long
那mysql_type_float.
那mysql_type_double.
那mysql_type_null.
那mysql_type_longlong
那mysql_type_int24.
, 和mysql_type_year.
。no_default_value_flag.
表示列没有默认
条款定义。这不适用于空值
列(因为这些列具有默认值空值
), 或者自动递增
列(具有隐含的默认值)。以下示例说明了典型的使用
旗帜
价值:if(field->标志&not_null_flag)printf(“字段不能为null \ n”);
您可以使用下表中显示的便利宏来确定蜂拥而至
旗帜
价值。无符号INT小数
数字字段的小数数,以及时间字段的分数秒精度。
unsigned int charsetnr.
一个ID号,指示该字段的字符集/核对对。
通常,结果集中的字符值被转换为所示的字符集
character_set_results.
系统变量。在这种情况下,charsetnr.
对应于该变量指示的字符集。通过设置可以抑制字符集转换character_set_results.
至空值
。在这种情况下,charsetnr.
对应于原始表列或表达式的字符集。也可以看看连接字符集和排序规则。要区分字符串数据类型的二进制和非inary数据,请检查是否
charsetnr.
值为63.如果是,则字符集是二进制
,它表示二进制而不是非inary数据。这使您能够区分二进制
从char
那varbinary.
从varchar.
,而且斑点
从中的类型文本
类型。charsetnr.
值与显示的值相同ID
栏目展示融合
声明或者ID
栏目Information_Schema.
拼写
桌子。您可以使用这些信息来源来查看特定的字符集和归类charsetnr.
值表示:MySQL>显示ID = 63;+ ----------- + --------- + ---- + --------- + ---------- + --------- + |整理|charset |ID |默认编译|sortlen |+ ----------- + --------- + ---- + --------- + ---------- + --------- + |二进制| binary | 63 | Yes | Yes | 1 | +-----------+---------+----+---------+----------+---------+ mysql> SELECT COLLATION_NAME, CHARACTER_SET_NAME FROM INFORMATION_SCHEMA.COLLATIONS WHERE ID = 33; +-----------------+--------------------+ | COLLATION_NAME | CHARACTER_SET_NAME | +-----------------+--------------------+ | utf8_general_ci | utf8 | +-----------------+--------------------+
enum enum_field_types类型
场的类型。这
类型
价值可能是其中之一mysql_type_
符号显示在下表中。类型值 类型描述 mysql_type_tiny.
Tinyint.
场地mysql_type_short.
small
场地mysql_type_long
整数
场地mysql_type_int24.
媒体
场地mysql_type_longlong
big
场地mysql_type_decimal.
十进制
或者数字
场地mysql_type_newdecimal.
精密数学 十进制
或者数字
mysql_type_float.
漂浮
场地mysql_type_double.
双倍的
或者真实的
场地mysql_type_bit.
少量
场地mysql_type_timestamp.
时间戳
场地mysql_type_date.
日期
场地mysql_type_time.
时间
场地mysql_type_datetime.
约会时间
场地mysql_type_year.
年
场地mysql_type_string.
char
或者二进制
场地mysql_type_var_string.
varchar.
或者varbinary.
场地mysql_type_blob.
斑点
或者文本
场(使用最长长度
确定最大长度)mysql_type_set.
放
场地mysql_type_enum.
枚举
场地mysql_type_geometry.
空间领域 mysql_type_null.
空值
-type字段这
mysql_type_time2.
那mysql_type_datetime2.
, 和mysql_type_timestamp2.
)类型代码仅在服务器端使用。客户看到了mysql_type_time.
那mysql_type_datetime.
, 和mysql_type_timestamp.
代码。你可以使用
is_num()
宏测试字段是否具有数字类型。通过类型
价值is_num()
如果字段为数字,则评估为true:if(is_num(field-> type))printf(“字段为numeric \ n”);
枚举
和放
值作为字符串返回。为此,检查那个类型
价值是mysql_type_string.
那个enum_flag.
或者set_flag.
标志设置在旗帜
价值。