从 SQL 到 C:二进制

二进制 ODBC SQL 数据类型的标识符为:

SQL_BINARY

SQL_VARBINARY

SQL_LONGVARBINARY

下表显示了二进制 SQL 数据可转换为的 ODBC C 数据类型。 有关表中的列和术语的说明,请参阅 将数据从 SQL 转换为 C 数据类型

C 类型标识符 测试 *TargetValuePtr *StrLen_or_IndPtr SQLSTATE
SQL_C_CHAR () * 2 <BufferLength 的数据字节长度

(字节长度的数据) * 2 >= BufferLength
数据

截断的数据
数据长度(以字节为单位)

数据长度(以字节为单位)
不适用

01004
SQL_C_WCHAR () * 2 <BufferLength 的数据的字符长度

() * 2 >= BufferLength 的字符长度
数据

截断的数据
数据长度(以字符为单位)

数据长度(以字符为单位)
不适用

01004
SQL_C_BINARY 数据的 <字节长度 = BufferLength

数据 >BufferLength 的字节长度
数据

截断的数据
数据长度(以字节为单位)

数据长度(以字节为单位)
不适用

01004

将二进制 SQL 数据转换为字符 C 数据时,源数据的每个字节 (8 位) 表示为两个 ASCII 字符。 这些字符是十六进制形式的数字的 ASCII 字符表示形式。 例如,二进制00000001转换为“01”,二进制11111111转换为“FF”。

驱动程序始终将单个字节转换为十六进制数字对,并使用 null 字节终止字符串。 因此,如果 BufferLength 为偶数且小于转换后的数据的长度,则不使用 *TargetValuePtr 缓冲区的最后一个字节。 (转换的数据需要偶数个字节,下一个字节为 null 字节,不能使用最后一个字节。)

注意

不建议应用程序开发人员将二进制 SQL 数据绑定到字符 C 数据类型。 这种转换通常效率低下且速度缓慢。