Compartilhar via


SQL para C: binário

Os identificadores para os tipos de dados SQL ODBC binários são:

SQL_BINARY

SQL_VARBINARY

SQL_LONGVARBINARY

A tabela a seguir mostra os tipos de dados ODBC C para os quais os dados SQL binários podem ser convertidos. Para obter uma explicação das colunas e dos termos na tabela, consulte Convertendo dados de tipos de dados SQL para C.

Identificador de tipo C Teste *TargetValuePtr *Strlen_or_indptr SQLSTATE
SQL_C_CHAR (Comprimento de bytes de dados) * 2 <BufferLength

(Comprimento de bytes de dados) * 2 >= BufferLength
Dados

Dados truncados
Comprimento dos dados em bytes

Comprimento dos dados em bytes
n/d

01004
SQL_C_WCHAR (Comprimento do caractere de dados) * 2 <BufferLength

(Comprimento do caractere dos dados) * 2 >= BufferLength
Dados

Dados truncados
Comprimento dos dados em caracteres

Comprimento dos dados em caracteres
n/d

01004
SQL_C_BINARY Comprimento de bytes de dados <= BufferLength

Comprimento de byte de buffer de dadosLength>
Dados

Dados truncados
Comprimento dos dados em bytes

Comprimento dos dados em bytes
n/d

01004

Quando dados SQL binários são convertidos em dados de caractere C, cada byte (8 bits) de dados de origem é representado como dois caracteres ASCII. Esses caracteres são a representação de caractere ASCII do número em sua forma hexadecimal. Por exemplo, um 00000001 binário é convertido em "01" e um 11111111 binário é convertido em "FF".

O driver sempre converte bytes individuais em pares de dígitos hexadecimal e termina a cadeia de caracteres com um byte nulo. Devido a isso, se BufferLength for uniforme e for menor que o comprimento dos dados convertidos, o último byte do buffer *TargetValuePtr não será usado. (Os dados convertidos exigem um número par de bytes, o byte próximo a último é um byte nulo e o último byte não pode ser usado.)

Observação

Os desenvolvedores de aplicativos não são desencorajados a associar dados SQL binários a um tipo de dados C de caractere. Essa conversão geralmente é ineficiente e lenta.