Partager via


SQLDataSourceToDriver, fonction

SQLDataSourceToDriver prend en charge les traductions pour les pilotes ODBC. Cette fonction n’est pas appelée par les applications compatibles ODBC ; 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 de la source de données vers le pilote. Une DLL de traduction par défaut peut être spécifiée dans le fichier d’initialisation ODBC.

Syntaxe

  
BOOL SQLDataSourceToDriver(  
     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 SQL. Cet argument indique au pilote comment convertir rgbValueIn dans un formulaire acceptable par l’application. Pour obtenir la liste des types de données SQL valides, consultez la section types de données SQL dans l’annexe D : Types de données.

rgbValueIn
[Entrée] Valeur à traduire.

cbValueIn
[Entrée] Longueur de rgbValueIn.

rgbValueOut
[Sortie] Résultat de la traduction.

Note

La DLL de traduction ne termine pas cette valeur par null.

cbValueOutMax
[Entrée] Longueur de rgbValueOut.

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

Pour les données caractères ou binaires, si cela est supérieur ou égal à cbValueOutMax, les données dans rgbValueOut sont tronquées en cbValueOutMax octets.

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 est la taille du type de données C par défaut du type de données SQL spécifié avec fSqlType.

L’argument 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.

ccpErrorMsg
[Sortie] Pointeur vers le nombre total d’octets (à l’exception de l’octet de terminaison null) disponible pour retourner dans szErrorMsg. Si cela est supérieur ou égal à cbErrorMsg, les données de szErrorMsg sont tronquées sur cbErrorMsgMax moins le caractère d’arrêt null. L’argument ccpErrorMsg peut être un pointeur Null.

Retourne

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

Commentaires

Le pilote appelle SQLDataSourceToDriver pour traduire alldata (données du jeu de résultats, noms de tables, nombres de lignes, messages d’erreur, et ainsi de suite) en passant de la source de données au pilote. 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 les données de caractères d’une page de codes vers 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 traduction de jeu de caractères spécifique.

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

Bien que cbValueIn, cbValueOutMaxet sont de type SDWORD, SQLDataSourceToDriver ne prend pas nécessairement en charge les pointeurs énormes.

Si SQLDataSourceToDriver retourne FALSE, la troncation des données peut s’être produite lors de la traduction. Si cbValueOut (le nombre d’octets disponibles pour retourner dans la mémoire tampon de sortie) est supérieur à cbValueOutMax (la longueur de la mémoire tampon de sortie), la troncation s’est produite. Le pilote doit déterminer si la troncation était acceptable. Si la troncation n’a pas eu lieu, le SQLDataSourceToDriver 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 plus d’informations sur Voir
Traduction des données envoyées à la source de données sqlDriverToDataSource
Renvoi du paramètre d’un attribut de connexion SQLGetConnectAttr
Définition d’un attribut de connexion SQLSetConnectAttr