从 SQL 到 C 的数据转换示例

下表中显示的示例演示了驱动程序如何将 SQL 数据转换为 C 数据:

SQL 类型

标识符
SQL 数据

value
C 类型

标识符
Buffer

length
*TargetValuePtr SQLSTATE
SQL_CHAR abcdef SQL_C_CHAR 7 abcdef\0[a] 不适用
SQL_CHAR abcdef SQL_C_CHAR 6 abcde\0[a] 01004
SQL_DECIMAL 1234.56 SQL_C_CHAR 8 1234.56\0[a] 不适用
SQL_DECIMAL 1234.56 SQL_C_CHAR 5 1234\0[a] 01004
SQL_DECIMAL 1234.56 SQL_C_CHAR 4 ---- 22003
SQL_DECIMAL 1234.56 SQL_C_FLOAT 已忽略 1234.56 不适用
SQL_DECIMAL 1234.56 SQL_C_SSHORT 已忽略 1234 01S07
SQL_DECIMAL 1234.56 SQL_C_STINYINT 已忽略 ---- 22003
SQL_DOUBLE 1.2345678 SQL_C_DOUBLE 已忽略 1.2345678 不适用
SQL_DOUBLE 1.2345678 SQL_C_FLOAT 已忽略 1.234567 不适用
SQL_DOUBLE 1.2345678 SQL_C_STINYINT 已忽略 1 不适用
SQL_TYPE_DATE 1992-12-31 SQL_C_CHAR 11 1992-12-31\0[a] 不适用
SQL_TYPE_DATE 1992-12-31 SQL_C_CHAR 10 ----- 22003
SQL_TYPE_DATE 1992-12-31 SQL_C_TIMESTAMP 已忽略 1992,12,31,0,0,0,0[b] 不适用
SQL_TYPE_TIMESTAMP 1992-12-31 23:45:55.12 SQL_C_CHAR 23 1992-12-31 23:45:55.12\0[a] 不适用
SQL_TYPE_TIMESTAMP 1992-12-31 23:45:55.12 SQL_C_CHAR 22 1992-12-31 23:45:55.1\0[a] 01004
SQL_TYPE_TIMESTAMP 1992-12-31 23:45:55.12 SQL_C_CHAR 18 ---- 22003

[a] “\0” 表示 null 终止字节。 驱动程序始终以 null 结尾SQL_C_CHAR数据。

[b] 此列表中的数字是存储在 TIMESTAMP_STRUCT 结构的字段中的数字。