Condividi tramite


Da SQL a C: dati binari

Gli identificatori per i tipi di dati ODBC SQL binari sono:

SQL_BINARY

SQL_VARBINARY

SQL_LONGVARBINARY

Nella tabella seguente vengono illustrati i tipi di dati ODBC C in cui è possibile convertire i dati SQL binari. Per una spiegazione delle colonne e dei termini nella tabella, vedere Conversione di dati da SQL a tipi di dati C.

Identificatore del tipo C Test *TargetValuePtr *StrLen_or_IndPtr SQLSTATE
SQL_C_CHAR (Lunghezza byte dei dati) * 2 <BufferLength

(Lunghezza byte dei dati) * 2 >= BufferLength
Dati

Dati troncati
Lunghezza dei dati in byte

Lunghezza dei dati in byte
N/D

01004
SQL_C_WCHAR (Lunghezza carattere dei dati) * 2 <BufferLength

(Lunghezza carattere dei dati) * 2 >= BufferLength
Dati

Dati troncati
Lunghezza dei dati in caratteri

Lunghezza dei dati in caratteri
N/D

01004
SQL_C_BINARY Lunghezza byte dei dati <= BufferLength

Lunghezza byte dei dati >BufferLength
Dati

Dati troncati
Lunghezza dei dati in byte

Lunghezza dei dati in byte
N/D

01004

Quando i dati SQL binari vengono convertiti in dati C di tipo carattere, ogni byte (8 bit) dei dati di origine viene rappresentato come due caratteri ASCII. Questi caratteri sono la rappresentazione di caratteri ASCII del numero nel formato esadecimale. Ad esempio, un 00000001 binario viene convertito in "01" e un 11111111 binario viene convertito in "FF".

Il driver converte sempre singoli byte in coppie di cifre esadecimali e termina la stringa di caratteri con un byte Null. Per questo motivo, se BufferLength è pari e è minore della lunghezza dei dati convertiti, l'ultimo byte del buffer *TargetValuePtr non viene usato. I dati convertiti richiedono un numero pari di byte, il byte successivo all'ultimo è un byte Null e l'ultimo byte non può essere usato.

Nota

Gli sviluppatori di applicazioni sono sconsigliati di associare dati SQL binari a un tipo di dati C carattere. Questa conversione è in genere inefficiente e lenta.