Beispiele für die Datenkonvertierung von C zu SQL
Die folgenden Beispiele veranschaulichen, wie der Treiber C-Daten in SQL-Daten konvertiert:
C-Typbezeichner | C-Datenwert | SQL-Typ Bezeichner |
Column 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, 1200000000[d] | SQL_CHAR | 22 | 1992-12-31 23:45:55.12 | – |
SQL_C_TYPE_TIMESTAMP | 1992,12,31, 23,45,55, 1200000000[d] | SQL_CHAR | 21 | 1992-12-31 23:45:55.1 | 22001 |
SQL_C_TYPE_TIMESTAMP | 1992,12,31, 23,45,55, 1200000000[d] | SQL_CHAR | 18 | ---- | 22003 |
[a] "\0" stellt ein NULL-Terminierungsbyte dar. Das NULL-Terminierungsbyte ist nur erforderlich, wenn die Länge der Daten SQL_NTS ist.
[b] Zusätzlich zu Bytes für Zahlen ist ein Byte für ein Zeichen und ein weiteres Byte für das Dezimalzeichen erforderlich.
[c] Die Zahlen in dieser Liste sind die Zahlen, die in den Feldern der SQL_DATE_STRUCT-Struktur gespeichert sind.
[d] Die Zahlen in dieser Liste sind die Zahlen, die in den Feldern der SQL_TIMESTAMP_STRUCT-Struktur gespeichert sind.