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.
Fonctions associées
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 |