Partager via


SQLDataSourceToDriver, fonction

SQLDataSourceToDriver prend en charge lestranslations 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 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 à 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.

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 SQLDataSourceToDriver pour traduire alldata (données du jeu de résultats, noms de table, nombre de lignes, messages d’erreur, etc.) 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 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, SQLDataSourceToDriver ne prend pas nécessairement en charge les pointeurs volumineux.

Si SQLDataSourceToDriver 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 pilote doit déterminer si la troncation était acceptable. Si la troncation ne s’est pas produite, SQLDataSourceToDriver 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 envoyées à la source de données SQLDriverToDataSource
Retour du paramètre d’un attribut de connexion SQLGetConnectAttr
Définition d’un attribut de connexion SQLSetConnectAttr