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.