27.7.8.1 C API 准备的语句类型代码
MYSQL_BIND
结构的buffer_type
成员指示绑定到语句参数或结果集列的 C 语言变量的数据类型。对于 Importing,buffer_type
table 示包含要发送到服务器的值的变量的类型。对于输出,它指示将从服务器接收的值存储到的变量类型。
下 table 显示了发送到服务器的 Importing 值的MYSQL_BIND
结构的buffer_type
成员的允许值。该 table 显示了可以使用的 C 变量类型,相应的类型代码以及可以在不进行转换的情况下使用提供的值的 SQL 数据类型。根据您要绑定的 C 语言变量的数据类型选择buffer_type
值。对于整数类型,还应该设置is_unsigned
成员以指示变量是带符号的还是无符号的。
Importing 变量 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 |
如对第 27.7.8 节“ C API 准备的语句数据结构”中的is_null
成员的说明所述,使用MYSQL_TYPE_NULL
。
对于 Importing 字符串数据,根据值是字符(非二进制)还是二进制字符串使用MYSQL_TYPE_STRING
或MYSQL_TYPE_BLOB
:
-
MYSQL_TYPE_STRING
table 示字符 Importing 字符串数据。假定该值位于character_set_client系统变量指示的字符集中。如果服务器将值存储到具有不同字符集的列中,则它将值转换为该字符集。 -
MYSQL_TYPE_BLOB
table 示二进制 Importing 字符串数据。该值被视为具有binary
字符集。即,将其视为字节字符串,并且不进行任何转换。
下 table 显示了从服务器接收到的输出值的MYSQL_BIND
结构的buffer_type
成员的允许值。该 table 显示了接收到的值的 SQL 类型,这些值在结果集元数据中具有的对应类型代码,以及推荐的 C 语言数据类型,这些类型绑定到MYSQL_BIND
结构以接收 SQL 值而无需进行转换。根据要绑定的 C 语言变量的数据类型选择buffer_type
值。对于整数类型,还应该设置is_unsigned
成员以指示变量是带符号的还是无符号的。
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[] |