Compartir a través de


SQL a C: Binary

Los identificadores de los tipos de datos ODBC SQL binarios son:

SQL_BINARY

SQL_VARBINARY

SQL_LONGVARBINARY

En la tabla siguiente se muestran los tipos de datos ODBC C a los que se pueden convertir los datos binarios de SQL. Para obtener una explicación de las columnas y los términos de la tabla, vea Convertir datos de SQL a tipos de datos de C.

Identificador de tipo de C Prueba *TargetValuePtr *StrLen_or_IndPtr SQLSTATE
SQL_C_CHAR (Longitud de bytes de los datos) * 2 <BufferLength

(Longitud de bytes de datos) * 2 >= BufferLength
data

Datos truncados
Longitud de los datos en bytes

Longitud de los datos en bytes
N/D

01004
SQL_C_WCHAR (Longitud de caracteres de los datos) * 2 <BufferLength

(Longitud de caracteres de los datos) * 2 >= BufferLength
data

Datos truncados
Longitud de datos en caracteres

Longitud de datos en caracteres
N/D

01004
SQL_C_BINARY Longitud de bytes de datos <= BufferLength

Longitud de bytes de BufferLength de datos >
data

Datos truncados
Longitud de los datos en bytes

Longitud de los datos en bytes
N/D

01004

Cuando los datos binarios de SQL se convierten en datos C de caracteres, cada byte (8 bits) de los datos de origen se representa como dos caracteres ASCII. Estos caracteres son la representación de caracteres ASCII del número en su forma hexadecimal. Por ejemplo, un 00000001 binario se convierte en "01" y un 11111111 binario se convierte en "FF".

El controlador siempre convierte bytes individuales en pares de dígitos hexadecimales y finaliza la cadena de caracteres con un byte nulo. Por este motivo, si BufferLength es par y es menor que la longitud de los datos convertidos, no se usa el último byte del búfer *TargetValuePtr . (Los datos convertidos requieren un número par de bytes, el byte siguiente a último es un byte nulo y el último byte no se puede usar).

Nota

No se recomienda a los desarrolladores de aplicaciones enlazar datos binarios de SQL a un tipo de datos de caracteres C. Esta conversión suele ser ineficaz y lenta.