27.7.8.1 C API 准备的语句类型代码

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

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

Importing 变量 C 类型buffer_typeSQL 目标值的类型
signed charMYSQL_TYPE_TINYTINYINT
short intMYSQL_TYPE_SHORTSMALLINT
intMYSQL_TYPE_LONGINT
long long intMYSQL_TYPE_LONGLONGBIGINT
floatMYSQL_TYPE_FLOATFLOAT
doubleMYSQL_TYPE_DOUBLEDOUBLE
MYSQL_TIMEMYSQL_TYPE_TIMETIME
MYSQL_TIMEMYSQL_TYPE_DATEDATE
MYSQL_TIMEMYSQL_TYPE_DATETIMEDATETIME
MYSQL_TIMEMYSQL_TYPE_TIMESTAMPTIMESTAMP
char[]MYSQL_TYPE_STRINGTEXT, CHAR, VARCHAR
char[]MYSQL_TYPE_BLOBBLOB, BINARY, VARBINARY
MYSQL_TYPE_NULLNULL

如对第 27.7.8 节“ C API 准备的语句数据结构”中的is_null成员的说明所述,使用MYSQL_TYPE_NULL

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

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

  • MYSQL_TYPE_BLOBtable 示二进制 Importing 字符串数据。该值被视为具有binary字符集。即,将其视为字节字符串,并且不进行任何转换。

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

SQL 接收值的类型buffer_type输出变量 C 类型
TINYINTMYSQL_TYPE_TINYsigned char
SMALLINTMYSQL_TYPE_SHORTshort int
MEDIUMINTMYSQL_TYPE_INT24int
INTMYSQL_TYPE_LONGint
BIGINTMYSQL_TYPE_LONGLONGlong long int
FLOATMYSQL_TYPE_FLOATfloat
DOUBLEMYSQL_TYPE_DOUBLEdouble
DECIMALMYSQL_TYPE_NEWDECIMALchar[]
YEARMYSQL_TYPE_SHORTshort int
TIMEMYSQL_TYPE_TIMEMYSQL_TIME
DATEMYSQL_TYPE_DATEMYSQL_TIME
DATETIMEMYSQL_TYPE_DATETIMEMYSQL_TIME
TIMESTAMPMYSQL_TYPE_TIMESTAMPMYSQL_TIME
CHAR, BINARYMYSQL_TYPE_STRINGchar[]
VARCHAR, VARBINARYMYSQL_TYPE_VAR_STRINGchar[]
TINYBLOB, TINYTEXTMYSQL_TYPE_TINY_BLOBchar[]
BLOB, TEXTMYSQL_TYPE_BLOBchar[]
MEDIUMBLOB, MEDIUMTEXTMYSQL_TYPE_MEDIUM_BLOBchar[]
LONGBLOB, LONGTEXTMYSQL_TYPE_LONG_BLOBchar[]
BITMYSQL_TYPE_BITchar[]