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.