C から SQL へのデータ変換の例
次の例は、ドライバーが C データを SQL データに変換する方法を示しています。
C 型識別子 | C データ値 | SQL 型 identifier |
列 length |
SQL data 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, 120000000[d] | SQL_CHAR | 22 | 1992-12-31 23:45:55.12 | 該当なし |
SQL_C_TYPE_TIMESTAMP | 1992,12,31, 23,45,55, 120000000[d] | SQL_CHAR | 21 | 1992-12-31 23:45:55.1 | 22001 |
SQL_C_TYPE_TIMESTAMP | 1992,12,31, 23,45,55, 120000000[d] | SQL_CHAR | 18 | ---- | 22003 |
[a] "\0" は null 終端バイトを表します。 null 終端バイトは、データの長さがSQL_NTS場合にのみ必要です。
[b] 数値のバイトに加えて、符号には 1 バイトが必要で、小数点には別のバイトが必要です。
[c] このリストの数値は、SQL_DATE_STRUCT構造体のフィールドに格納されている数値です。
[d] このリストの数値は、SQL_TIMESTAMP_STRUCT構造体のフィールドに格納されている数値です。