从 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结构的字段中的数字。