Freigeben über


SQLDataSourceToDriver-Funktion

SQLDataSourceToDriver- unterstützt Übersetzungen für ODBC-Treiber. Diese Funktion wird nicht von ODBC-aktivierten Anwendungen aufgerufen. Anwendungen fordern Übersetzung über SQLSetConnectAttran. Der treiber, der dem ConnectionHandle- zugeordnet ist, das in SQLSetConnectAttr angegeben ruft die angegebene DLL auf, um Übersetzungen aller Daten auszuführen, die von der Datenquelle in den Treiber fließen. Eine standardmäßige Übersetzungs-DLL kann in der ODBC-Initialisierungsdatei angegeben werden.

Syntax

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

Argumente

fOption
[Eingabe] Optionswert.

fSqlType-
[Eingabe] Der SQL-Datentyp. Dieses Argument teilt dem Treiber mit, wie rgbValueIn- in ein von der Anwendung akzeptables Formular konvertiert werden kann. Eine Liste gültiger SQL-Datentypen finden Sie im Abschnitt SQL-Datentypen Abschnitt in Anhang D: Datentypen.

rgbValueIn-
[Eingabe] Zu übersetzende Wert.

cbValueIn-
[Eingabe] Länge des rgbValueIn-.

rgbValueOut-
[Ausgabe] Ergebnis der Übersetzung.

Anmerkung

Die Übersetzungs-DLL beendet diesen Wert nicht null.

cbValueOutMax
[Eingabe] Länge des rgbValueOut-.

pcbValueOut-
[Ausgabe] Die Gesamtanzahl der Bytes (ohne das Byte der Nullendung), die in rgbValueOut-zurückgegeben werden können.

Wenn dies für Zeichen- oder Binärdaten größer oder gleich cbValueOutMaxist, werden die Daten in rgbValueOut- auf cbValueOutMax- Bytes abgeschnitten.

Für alle anderen Datentypen wird der Wert von cbValueOutMax ignoriert, und die Übersetzungs-DLL geht davon aus, dass die Größe von rgbValueOut- die Größe des standardmäßigen C-Datentyps des SQL-Datentyps ist, der mit fSqlTypeangegeben ist.

Das pcbValueOut--Argument kann ein NULL-Zeiger sein.

szErrorMsg
[Ausgabe] Zeiger auf Speicher für eine Fehlermeldung. Dies ist eine leere Zeichenfolge, es sei denn, die Übersetzung ist fehlgeschlagen.

cbErrorMsgMax
[Eingabe] Länge szErrorMsg.

pcbErrorMsg
[Ausgabe] Zeiger auf die Gesamtanzahl der Bytes (mit Ausnahme des Byte null-Beendigung), die in szErrorMsgzurückgegeben werden können. Wenn dies größer oder gleich cbErrorMsgist, werden die Daten in szErrorMsg auf cbErrorMsgMax minus dem Nullendpunktzeichen abgeschnitten. Das pcbErrorMsg Argument kann ein Nullzeiger sein.

Ertrag

TRUE, wenn die Übersetzung erfolgreich war, FALSE, wenn die Übersetzung fehlgeschlagen ist.

Kommentare

Der Treiber ruft SQLDataSourceToDriver- auf, um alle Daten (Resultsetdaten, Tabellennamen, Zeilenanzahlen, Fehlermeldungen usw.) zu übersetzen, die von der Datenquelle an den Treiber übergeben werden. Die Übersetzungs-DLL übersetzt möglicherweise einige Daten nicht, abhängig vom Typ der Daten und dem Zweck der Übersetzungs-DLL; Beispielsweise ignoriert eine DLL, die Zeichendaten von einer Codeseite in eine andere übersetzt, alle numerischen und binären Daten.

Der Wert von fOption wird auf den Wert vParam- festgelegt, indem SQLSetConnectAttr mit dem attribut SQL_ATTR_TRANSLATE_OPTION aufgerufen wird. Es handelt sich um einen 32-Bit-Wert, der eine bestimmte Bedeutung für eine bestimmte Übersetzungs-DLL hat. Beispielsweise könnte eine bestimmte Zeichensatzübersetzung angegeben werden.

Wenn derselbe Puffer für rgbValueIn- und rgbValueOut-angegeben wird, wird die Übersetzung von Daten im Puffer ausgeführt.

Obwohl cbValueIn, cbValueOutMaxund pcbValueOut vom Typ SDWORD sind, unterstützt SQLDataSourceToDriver- nicht unbedingt große Zeiger.

Wenn SQLDataSourceToDriver FALSE zurückgibt, sind während der Übersetzung möglicherweise Datenkürzungen aufgetreten. Wenn pcbValueOut- (die Anzahl der im Ausgabepuffer zurückgegebenen Bytes) größer als cbValueOutMax (die Länge des Ausgabepuffers) ist, ist die Abkürzung aufgetreten. Der Treiber muss bestimmen, ob die Abkürzung zulässig war. Wenn das Abschneiden nicht erfolgt ist, SQLDataSourceToDriver aufgrund eines anderen Fehlers FALSCH zurückgegeben. In beiden Fällen wird eine bestimmte Fehlermeldung in szErrorMsgzurückgegeben.

Weitere Informationen zum Übersetzen von Daten finden Sie unter Übersetzungs-DLLs.

Informationen zu Siehe
Übersetzen von Daten, die an die Datenquelle gesendet werden SQLDriverToDataSource-
Zurückgeben der Einstellung eines Verbindungsattributes SQLGetConnectAttr-
Festlegen eines Verbindungsattributes SQLSetConnectAttr-