从 C 到 SQL 的数据转换示例

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

C 类型标识符 C 数据值 SQL 类型

标识符


length
SQL 数据

value
SQLSTATE
SQL_C_CHAR abcdef\0[a] SQL_CHAR 6 abcdef 不适用
SQL_C_CHAR abcdef\0[a] SQL_CHAR 5 abcde 22001
SQL_C_CHAR 1234.56\0[a] SQL_DECIMAL 8[b] 1234.56 不适用
SQL_C_CHAR 1234.56\0[a] SQL_DECIMAL 7[b] 1234.5 22001
SQL_C_CHAR 1234.56\0[a] SQL_DECIMAL 4 ---- 22003
SQL_C_FLOAT 1234.56 SQL_FLOAT 不适用 1234.56 不适用
SQL_C_FLOAT 1234.56 SQL_INTEGER 不适用 1234 22001
SQL_C_FLOAT 1234.56 SQL_TINYINT 不适用 ---- 22003
SQL_C_TYPE_DATE 1992,12,31[c] SQL_CHAR 10 1992-12-31 不适用
SQL_C_TYPE_DATE 1992,12,31[c] SQL_CHAR 9 ---- 22003
SQL_C_TYPE_DATE 1992,12,31[c] SQL_TIMESTAMP 不适用 1992-12-31 00:00:00.0 不适用
SQL_C_TYPE_TIMESTAMP 1992,12,31,23,45,55,12000000[d] SQL_CHAR 22 1992-12-31 23:45:55.12 不适用
SQL_C_TYPE_TIMESTAMP 1992,12,31,23,45,55,12000000[d] SQL_CHAR 21 1992-12-31 23:45:55.1 22001
SQL_C_TYPE_TIMESTAMP 1992,12,31,23,45,55,12000000[d] SQL_CHAR 18 ---- 22003

[a] “\0”表示 null 终止字节。 仅当数据长度SQL_NTS时,才需要 null 终止字节。

[b] 除了数字的字节外,符号还需要一个字节,小数点需要另一个字节。

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

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