Partager via


SQLDriverToDataSource, fonction

SQLDriverToDataSource prend en charge les traductions pour les pilotes ODBC. Cette fonction n’est pas appelée par les applications avec ODBC ; les applications demandent la traduction via SQLSetConnectAttr. Le pilote associé au ConnectionHandle spécifié dans SQLSetConnectAttr appelle la DLL spécifiée pour effectuer des traductions de toutes les données qui circulent du pilote vers la source de données. Une DLL de traduction par défaut peut être spécifiée dans le fichier d’initialisation ODBC.

Syntaxe

  
BOOL SQLDriverToDataSource(  
     UDWORD     fOption,  
     SWORD      fSqlType,  
     PTR        rgbValueIn,  
     SDWORD     cbValueIn,  
     PTR        rgbValueOut,  
     SDWORD     cbValueOutMax,  
     SDWORD *   pcbValueOut,  
     UCHAR *    szErrorMsg,  
     SWORD      cbErrorMsgMax,  
     SWORD *    pcbErrorMsg);  

Arguments

fOption
[Entrée] Valeur de l’option.

fSqlType
[Entrée] Type de données ODBC SQL. Cet argument indique au pilote comment convertir rgbValueIn dans un formulaire acceptable par la source de données. Pour obtenir la liste des types de données SQL valides, consultez Types de données SQL.

rgbValueIn
[Entrée] Valeur à traduire.

cbValueIn
[Entrée] Longueur de rgbValueIn.

rgbValueOut
[Sortie] Résultat de la traduction.

Notes

La DLL de traduction n’arrête pas null cette valeur.

cbValueOutMax
[Entrée] Longueur de rgbValueOut.

pcbValueOut
[Sortie] Nombre total d’octets (à l’exception de l’octet de terminaison null) disponibles pour retourner dans rgbValueOut.

Pour les données caractère ou binaires, si cette valeur est supérieure ou égale à cbValueOutMax, les données dans rgbValueOut sont tronquées en octets cbValueOutMax .

Pour tous les autres types de données, la valeur de cbValueOutMax est ignorée et la DLL de traduction suppose que la taille de rgbValueOut correspond à la taille du type de données C par défaut du type de données SQL spécifié avec fSqlType.

L’argument pcbValueOut peut être un pointeur Null.

szErrorMsg
[Sortie] Pointeur vers le stockage pour un message d’erreur. Il s’agit d’une chaîne vide, sauf si la traduction a échoué.

cbErrorMsgMax
[Entrée] Longueur de szErrorMsg.

pcbErrorMsg
[Sortie] Pointeur vers le nombre total d’octets (à l’exception de l’octet de terminaison null) disponibles pour retourner dans szErrorMsg. Si cette valeur est supérieure ou égale à cbErrorMsg, les données dans szErrorMsg sont tronquées en cbErrorMsgMax moins le caractère null de terminaison. L’argument pcbErrorMsg peut être un pointeur null.

Retours

TRUE si la traduction a réussi, FALSE si la traduction a échoué.

Commentaires

Le pilote appelle SQLDriverToDataSource pour traduire toutes les données (instructions SQL, paramètres, etc.) passant du pilote à la source de données. La DLL de traduction peut ne pas traduire certaines données, en fonction du type des données et de l’objectif de la DLL de traduction. Par exemple, une DLL qui traduit des données de caractères d’une page de code à une autre ignore toutes les données numériques et binaires.

La valeur de fOption est définie sur la valeur de vParam spécifiée en appelant SQLSetConnectAttr avec l’attribut SQL_ATTR_TRANSLATE_OPTION. Il s’agit d’une valeur 32 bits qui a une signification spécifique pour une DLL de traduction donnée. Par exemple, il peut spécifier une certaine traduction de jeu de caractères.

Si la même mémoire tampon est spécifiée pour rgbValueIn et rgbValueOut, la traduction des données dans la mémoire tampon est effectuée en place.

Bien que cbValueIn, cbValueOutMax et pcbValueOut soient de type SDWORD, SQLDriverToDataSource ne prend pas nécessairement en charge les pointeurs volumineux.

Si SQLDriverToDataSource retourne FALSE, la troncation des données peut s’être produite pendant la traduction. Si pcbValueOut (le nombre d’octets disponibles à retourner dans la mémoire tampon de sortie) est supérieur à cbValueOutMax (longueur de la mémoire tampon de sortie), la troncation s’est produite. Le conducteur doit déterminer si la troncation était acceptable ou non. Si la troncation ne s’est pas produite, SQLDriverToDataSource a retourné FALSE en raison d’une autre erreur. Dans les deux cas, un message d’erreur spécifique est retourné dans szErrorMsg.

Pour plus d’informations sur la traduction de données, consultez Dll de traduction.

Pour obtenir des informations sur Consultez
Traduction des données retournées à partir de la source de données SQLDataSourceToDriver
Retour du paramètre d’un attribut de connexion SQLGetConnectAttr
Définition d’un attribut de connexion SQLSetConnectAttr