6.2.1 C API 准备语句类型代码

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

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

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

输入变量 C 类型 buffer_type价值 目标值的 SQL 类型
signed char MYSQL_TYPE_TINY TINYINT
short int MYSQL_TYPE_SHORT SMALLINT
int MYSQL_TYPE_LONG INT
long long int MYSQL_TYPE_LONGLONG BIGINT
float MYSQL_TYPE_FLOAT FLOAT
double MYSQL_TYPE_DOUBLE DOUBLE
MYSQL_TIME MYSQL_TYPE_TIME TIME
MYSQL_TIME MYSQL_TYPE_DATE DATE
MYSQL_TIME MYSQL_TYPE_DATETIME DATETIME
MYSQL_TIME MYSQL_TYPE_TIMESTAMP TIMESTAMP
char[] MYSQL_TYPE_STRING TEXT, CHAR, VARCHAR
char[] MYSQL_TYPE_BLOB BLOB, BINARY, VARBINARY
MYSQL_TYPE_NULL NULL

按照第 6.2 节“C API 准备语句数据结构”中成员 MYSQL_TYPE_NULL的说明中的指示 使用。 is_null

对于输入字符串数据,使用MYSQL_TYPE_STRING orMYSQL_TYPE_BLOB取决于值是字符(非二进制)还是二进制字符串:

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

  • MYSQL_TYPE_BLOB表示二进制输入字符串数据。该值被视为具有 binary字符集。也就是说,它被视为一个字节串,不发生任何转换。

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

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

接收值的 SQL 类型 buffer_type价值 输出变量 C 类型
TINYINT MYSQL_TYPE_TINY signed char
SMALLINT MYSQL_TYPE_SHORT short int
MEDIUMINT MYSQL_TYPE_INT24 int
INT MYSQL_TYPE_LONG int
BIGINT MYSQL_TYPE_LONGLONG long long int
FLOAT MYSQL_TYPE_FLOAT float
DOUBLE MYSQL_TYPE_DOUBLE double
DECIMAL MYSQL_TYPE_NEWDECIMAL char[]
YEAR MYSQL_TYPE_SHORT short int
TIME MYSQL_TYPE_TIME MYSQL_TIME
DATE MYSQL_TYPE_DATE MYSQL_TIME
DATETIME MYSQL_TYPE_DATETIME MYSQL_TIME
TIMESTAMP MYSQL_TYPE_TIMESTAMP MYSQL_TIME
CHAR, BINARY MYSQL_TYPE_STRING char[]
VARCHAR, VARBINARY MYSQL_TYPE_VAR_STRING char[]
TINYBLOB, TINYTEXT MYSQL_TYPE_TINY_BLOB char[]
BLOB,TEXT MYSQL_TYPE_BLOB char[]
MEDIUMBLOB, MEDIUMTEXT MYSQL_TYPE_MEDIUM_BLOB char[]
LONGBLOB, LONGTEXT MYSQL_TYPE_LONG_BLOB char[]
BIT MYSQL_TYPE_BIT char[]