SQL à C : Binary
Les identificateurs des types de données SQL ODBC binaires sont les suivants :
SQL_BINARY
SQL_VARBINARY
SQL_LONGVARBINARY
Le tableau suivant montre les types de données ODBC C vers lesquels les données SQL binaires peuvent être converties. Pour obtenir une explication des colonnes et des termes de la table, consultez Conversion de données de SQL en types de données C.
Identificateur de type C | Test | *TargetValuePtr | *StrLen_or_IndPtr | SQLSTATE |
---|---|---|---|---|
SQL_C_CHAR | (Longueur en octets des données) * 2 <BufferLength (Longueur en octets des données) * 2 >= BufferLength |
Données Données tronquées |
Longueur des données en octets Longueur des données en octets |
n/a 01004 |
SQL_C_WCHAR | (Longueur des caractères des données) * 2 <BufferLength (Longueur des caractères des données) * 2 >= BufferLength |
Données Données tronquées |
Longueur des données en caractères Longueur des données en caractères |
n/a 01004 |
SQL_C_BINARY | Longueur en octets des données <= BufferLength Longueur en octets des données >BufferLength |
Données Données tronquées |
Longueur des données en octets Longueur des données en octets |
n/a 01004 |
Lorsque des données SQL binaires sont converties en données de caractère C, chaque octet (8 bits) des données sources est représenté sous la forme de deux caractères ASCII. Ces caractères sont la représentation en caractères ASCII du nombre dans sa forme hexadécimale. Par exemple, un 00000001 binaire est converti en « 01 » et un 11111111 binaire est converti en « FF ».
Le pilote convertit toujours des octets individuels en paires de chiffres hexadécimaux et termine la chaîne de caractères avec un octet null. Pour cette raison, si BufferLength est pair et est inférieur à la longueur des données converties, le dernier octet de la mémoire tampon *TargetValuePtr n’est pas utilisé. (Les données converties nécessitent un nombre pair d’octets, l’avant-dernier octet est un octet Null et le dernier octet ne peut pas être utilisé.)
Notes
Les développeurs d’applications sont découragés de lier des données SQL binaires à un type de données C caractère. Cette conversion est généralement inefficace et lente.