Teilen über


SQL zu C: binär

Die Bezeichner für die binären ODBC SQL-Datentypen sind:

SQL_BINARY

SQL_VARBINARY

SQL_LONGVARBINARY

Die folgende Tabelle zeigt die ODBC C-Datentypen, in die binäre SQL-Daten 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) * 2 <BufferLength

(Bytelänge der Daten) * 2 >= BufferLength
Daten

Abgeschnittene Daten
Länge der Daten in Bytes

Länge der Daten in Bytes


01004
SQL_C_WCHAR (Zeichenlänge der Daten) * 2 <BufferLength

(Zeichenlänge der Daten) * 2 >= BufferLength
Daten

Abgeschnittene Daten
Länge der Daten in Zeichen

Länge der Daten in Zeichen


01004
SQL_C_BINARY Bytelänge von Daten <= BufferLength

Bytelänge der Daten >bufferLength
Daten

Abgeschnittene Daten
Länge der Daten in Bytes

Länge der Daten in Bytes


01004

Wenn binäre SQL-Daten in Zeichen C-Daten konvertiert werden, wird jedes Byte (8 Bit) der Quelldaten als zwei ASCII-Zeichen dargestellt. Diese Zeichen sind die ASCII-Zeichendarstellung der Zahl in ihrer hexadezimalen Form. Beispielsweise wird eine binäre 00000001 in "01" und eine binäre 11111111 in "FF" konvertiert.

Der Treiber konvertiert immer einzelne Bytes in Paare von Hexadezimalstellen und beendet die Zeichenfolge mit einem NULL-Byte. Aus diesem Grund wird das letzte Byte des *TargetValuePtr-Puffers nicht verwendet, wenn BufferLength gerade ist und kleiner als die Länge der konvertierten Daten ist. (Die konvertierten Daten erfordern eine gerade Anzahl von Bytes, das vorletzte Byte ist ein NULL-Byte, und das letzte Byte kann nicht verwendet werden.)

Hinweis

Anwendungsentwickler werden davon abgeraten, binäre SQL-Daten an einen Zeichen-C-Datentyp zu binden. Diese Konvertierung ist in der Regel ineffizient und langsam.