6.2.1 C API编写语句类型代码

buffer_type的成员MYSQL_BINDstruct表示绑定到语句参数或结果集列的C语言变量的数据类型。为输入,buffer_type指示包含要发送到服务器的值的变量的类型。对于输出,它指示应该将从服务器接收的值存储到的变量的类型。

的允许值如下表所示buffer_type的成员MYSQL_BIND用于发送到服务器的输入值的结构。表中显示了可以使用的C变量类型、相应的类型代码,以及无需转换就可以使用所提供值的SQL数据类型。选择buffer_type值,根据要绑定的C语言变量的数据类型。对于整数类型,还应该设置is_unsigned成员来指示变量是有符号的还是无符号的。

表6.1 MYSQL_BIND结构允许的输入数据类型

输入变量C类型 buffer_type价值 SQL目的值类型
签署了字符 MYSQL_TYPE_TINY 非常小的整数
短整型 MYSQL_TYPE_SHORT 短整型
int MYSQL_TYPE_LONG INT
长长的int MYSQL_TYPE_LONGLONG 长整型数字
浮动 MYSQL_TYPE_FLOAT 浮动
MYSQL_TYPE_DOUBLE
MYSQL_TIME MYSQL_TYPE_TIME 时间
MYSQL_TIME MYSQL_TYPE_DATE 日期
MYSQL_TIME MYSQL_TYPE_DATETIME DATETIME
MYSQL_TIME MYSQL_TYPE_TIMESTAMP 时间戳
char [] MYSQL_TYPE_STRING 文本,字符,VARCHAR
char [] MYSQL_TYPE_BLOB ,二进制,VARBINARY
MYSQL_TYPE_NULL

使用MYSQL_TYPE_NULL如描述中所示is_null成员第6.2节,“C API准备好的语句数据结构”

对于输入的字符串数据,使用MYSQL_TYPE_STRINGMYSQL_TYPE_BLOB根据值是字符(非二进制)还是二进制字符串:

  • MYSQL_TYPE_STRING字符输入字符串数据。属性指定的字符集中character_set_client系统变量。如果服务器将该值存储到具有不同字符集的列中,则将该值转换为该字符集。

  • MYSQL_TYPE_BLOB二进制输入字符串数据。该值被视为具有二进制字符集。也就是说,它被视为一个字节字符串,并且没有发生转换。

的允许值如下表所示buffer_type的成员MYSQL_BIND用于从服务器接收的输出值的结构。表中显示了接收到的值的SQL类型、这些值在结果集元数据中对应的类型代码,以及要绑定到的推荐的C语言数据类型MYSQL_BIND结构接收SQL值而不进行转换。选择buffer_type值,根据要绑定的C语言变量的数据类型。对于整数类型,还应该设置is_unsigned成员来指示变量是有符号的还是无符号的。

表6.2 MYSQL_BIND结构允许的输出数据类型

SQL接收值类型 buffer_type价值 输出变量C类型
非常小的整数 MYSQL_TYPE_TINY 签署了字符
短整型 MYSQL_TYPE_SHORT 短整型
MEDIUMINT MYSQL_TYPE_INT24 int
INT MYSQL_TYPE_LONG int
长整型数字 MYSQL_TYPE_LONGLONG 长长的int
浮动 MYSQL_TYPE_FLOAT 浮动
MYSQL_TYPE_DOUBLE
小数 MYSQL_TYPE_NEWDECIMAL char []
一年 MYSQL_TYPE_SHORT 短整型
时间 MYSQL_TYPE_TIME MYSQL_TIME
日期 MYSQL_TYPE_DATE MYSQL_TIME
DATETIME MYSQL_TYPE_DATETIME MYSQL_TIME
时间戳 MYSQL_TYPE_TIMESTAMP MYSQL_TIME
字符,二进制 MYSQL_TYPE_STRING char []
VARCHAR,VARBINARY MYSQL_TYPE_VAR_STRING char []
TINYBLOB,非常小的文本串 MYSQL_TYPE_TINY_BLOB char []
,文本 MYSQL_TYPE_BLOB char []
MEDIUMBLOB,简单 MYSQL_TYPE_MEDIUM_BLOB char []
LONGBLOB,量变 MYSQL_TYPE_LONG_BLOB char []
MYSQL_TYPE_BIT char []