Поделиться через


Преобразование данных из SQL в C: двоичные данные

Идентификаторы двоичных типов данных ODBC SQL:

SQL_BINARY

SQL_VARBINARY

SQL_LONGVARBINARY

В следующей таблице показаны типы данных ODBC C, в которые могут быть преобразованы двоичные данные SQL. Описание столбцов и терминов в таблице см. в разделе "Преобразование данных из SQL в типы данных C".

Идентификатор типа C Тест *TargetValuePtr *StrLen_or_IndPtr SQLSTATE
SQL_C_CHAR (Длина байтов данных) * 2 <BufferLength

(Длина байтов данных) * 2 >= BufferLength
Data

Усеченные данные
Длина данных в байтах

Длина данных в байтах
Недоступно

01004
SQL_C_WCHAR (Длина символов данных) * 2 <BufferLength

(Длина символов данных) * 2 >= BufferLength
Data

Усеченные данные
Длина данных в символах

Длина данных в символах
Недоступно

01004
SQL_C_BINARY Длина байтов данных <= BufferLength

Длина байтов данных >BufferLength
Data

Усеченные данные
Длина данных в байтах

Длина данных в байтах
Недоступно

01004

При преобразовании двоичных данных SQL в символьные данные C каждый байт (8 бит) исходных данных представлен как два символа ASCII. Эти символы представляют собой символьное представление числа в шестнадцатеричной форме. Например, двоичный 00000001 преобразуется в "01", а двоичный 11111111 преобразуется в "FF".

Драйвер всегда преобразует отдельные байты в пары шестнадцатеричных цифр и завершает строку символа с байтом NULL. Из-за этого, если BufferLength даже и меньше длины преобразованных данных, последний байт буфера *TargetValuePtr не используется. (Для преобразованных данных требуется четное число байтов, следующее к последнему байту — null байт, а последний байт нельзя использовать.)

Заметка

Разработчикам приложений не рекомендуется привязывать двоичные данные SQL к типу данных C символа C. Это преобразование обычно неэффективно и медленно.