Teilen über


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