SQL zu C: Zeichen
Die Bezeichner für die ODBC SQL-Datentypen des Zeichens sind die folgenden:
- SQL_CHAR
- SQL_VARCHAR
- SQL_LONGVARCHAR
- SQL_WCHAR
- SQL_WVARCHAR
- SQL_WLONGVARCHAR
Die folgende Tabelle zeigt die ODBC C-Datentypen, in die SQL-Zeichendaten konvertiert werden können. Eine Erklärung der Spalten und Begriffe in der Tabelle finden Sie unter Konvertieren von Daten aus SQL in C-Datentypen.
C-Typbezeichner | Test | TargetValuePtr | StrLen_or_IndPtr | SQLSTATE |
---|---|---|---|---|
SQL_C_CHAR | Bytelänge der Daten <bufferLength Bytelänge von Daten >= BufferLength |
Daten Abgeschnittene Daten |
Länge der Daten in Bytes Länge der Daten in Bytes |
– 01004 |
SQL_C_WCHAR | Zeichenlänge von Daten <BufferLength Zeichenlänge von Daten >= BufferLength |
Daten Abgeschnittene Daten |
Länge der Daten in Zeichen Länge der Daten in Zeichen |
– 01004 |
SQL_C_STINYINT SQL_C_UTINYINT SQL_C_TINYINT SQL_C_SBIGINT SQL_C_UBIGINT SQL_C_SSHORT SQL_C_USHORT SQL_C_SHORT SQL_C_SLONG SQL_C_ULONG SQL_C_LONG SQL_C_NUMERIC | Konvertierte Daten ohne Abschneiden[b] Konvertierte Daten mit Abschneiden von Bruchstellen[a] Die Konvertierung von Daten würde zum Verlust ganzer (im Gegensatz zu bruchbehafteten) Ziffern führen[a] Daten sind kein numerisches Literal[b] |
Daten Abgeschnittene Daten Nicht definiert Nicht definiert |
Anzahl der Bytes des Datentyps C Anzahl der Bytes des Datentyps C Nicht definiert Nicht definiert |
– 01S07 22003 22018 |
SQL_C_FLOAT SQL_C_DOUBLE | Daten liegen innerhalb des Bereichs des Datentyps, in den die Zahl konvertiert wird[a] Daten liegen außerhalb des Bereichs des Datentyps, in den die Zahl konvertiert wird[a] Daten sind kein numerisches Literal[b] |
Daten Nicht definiert Nicht definiert |
Größe des Datentyps C Nicht definiert Nicht definiert |
– 22003 22018 |
SQL_C_BIT | Daten sind 0 oder 1 Daten sind größer als 0, kleiner als 2 und nicht gleich 1 Daten sind kleiner als 0 oder größer als oder gleich 2 Daten sind kein numerisches Literal |
Daten Abgeschnittene Daten Nicht definiert Nicht definiert |
1[b] 1[b] Nicht definiert Nicht definiert |
– 01S07 22003 22018 |
SQL_C_BINARY | Bytelänge von Daten <= BufferLength Bytelänge der Daten >bufferLength |
Daten Abgeschnittene Daten |
Länge der Daten in Bytes Datenlänge |
– 01004 |
SQL_C_TYPE_DATE | Der Datenwert ist ein gültiger Datum-Wert[a] Der Datenwert ist ein gültiger Zeitstempelwert. Zeitanteil ist 0[a] Der Datenwert ist ein gültiger Zeitstempelwert. Der Zeitteil ist nichtzero[a],[c] Der Datenwert ist kein gültiger Datumswert oder Zeitstempelwert[a] |
Daten Daten Abgeschnittene Daten Nicht definiert |
6[b] 6[b] 6[b] Nicht definiert |
– – 01S07 22018 |
SQL_C_TYPE_TIME | Der Datenwert ist ein gültiger Zeitwert, und der Sekundenbruchwert ist 0[a] Der Datenwert ist ein gültiger Zeitstempelwert oder ein gültiger Zeitwert. Sekundenbruchteile sind null[a],[d] Der Datenwert ist ein gültiger Zeitstempelwert. Sekundenbruchteil ist nichtzero[a],[d],[e] Der Datenwert ist kein gültiger Zeit- oder Zeitstempelwert[a] |
Daten Daten Abgeschnittene Daten Nicht definiert |
6[b] 6[b] 6[b] Nicht definiert |
– – 01S07 22018 |
SQL_C_TYPE_TIMESTAMP | Der Datenwert ist ein gültiger Zeitstempelwert oder ein gültiger Zeitwert. Sekundenbruchteile nicht abgeschnitten[a] Der Datenwert ist ein gültiger Zeitstempelwert oder ein gültiger Zeitwert. Sekundenbruchteile abgeschnitten[a] Der Datenwert ist ein gültiger Datum-Wert[a] Der Datenwert ist ein gültiger Zeitwert[a] Der Datenwert ist kein gültiger Datums-,Zeit- oder Zeitstempelwert[a] |
Daten Abgeschnittene Daten Daten[f] Daten[g] Nicht definiert |
16[b] 16[b] 16[b] 16[b] Nicht definiert |
– 01S07 – – 22018 |
Alle C-Intervalltypen | Der Datenwert ist ein gültiger Intervallwert. keine Abschneidung Der Datenwert ist ein gültiger Intervallwert. Abschneiden eines oder mehrerer nachgestellter Felder Daten sind ein gültiges Intervall; Führende Feldgenauigkeit geht verloren Der Datenwert ist kein gültiger Intervallwert. |
Daten Abgeschnittene Daten Nicht definiert Nicht definiert |
Länge der Daten in Bytes Länge der Daten in Bytes Nicht definiert Nicht definiert |
– 01S07 22015 22018 |
[a] Der Wert von BufferLength wird für diese Konvertierung ignoriert. Der Treiber geht davon aus, dass die Größe von *TargetValuePtr der Größe des C-Datentyps entspricht.
[b] Dies ist die Größe des entsprechenden C-Datentyps.
[c] Der Zeitteil des Zeitstempelwerts wird abgeschnitten.
[d] Der Datumsteil des Zeitstempelwerts wird ignoriert.
[e] Der Sekundenbruchteil des Zeitstempels wird abgeschnitten.
[f] Die Zeitfelder der Zeitstempelstruktur sind auf 0 festgelegt.
[g] Die Datumsfelder der Zeitstempelstruktur sind auf das aktuelle Datum festgelegt.
Zusätzliche Leerzeichen
Führende und nachfolgende Leerzeichen werden ignoriert, wenn SQL-Zeichendaten in einen der folgenden Typen konvertiert werden:
- date
- NUMERIC
- time
- timestamp
- Intervall C-Daten