Freigeben über


SQLDriverToDataSource-Funktion

SQLDriverToDataSource unterstützt Übersetzungen für ODBC-Treiber. Diese Funktion wird von ODBC-fähigen Anwendungen nicht aufgerufen. Anwendungen fordern die Übersetzung über SQLSetConnectAttr an. Der Treiber, der dem in SQLSetConnectAttr angegebenen ConnectionHandle zugeordnet ist, ruft die angegebene DLL auf, um Übersetzungen aller Daten auszuführen, die vom Treiber zur Datenquelle fließen. Eine Standardübersetzungs-DLL kann in der ODBC-Initialisierungsdatei angegeben werden.

Syntax

  
BOOL SQLDriverToDataSource(  
     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 ODBC SQL-Datentyp. Dieses Argument teilt dem Treiber mit, wie rgbValueIn in ein für die Datenquelle akzeptables Formular konvertiert werden soll. Eine Liste der gültigen SQL-Datentypen finden Sie unter SQL-Datentypen.

rgbValueIn
[Eingabe] Zu übersetzende Wert.

cbValueIn
[Eingabe] Länge von rgbValueIn.

rgbValueOut
[Ausgabe] Ergebnis der Übersetzung.

Hinweis

Die Übersetzungs-DLL beendet diesen Wert nicht mit NULL.

cbValueOutMax
[Eingabe] Länge von rgbValueOut.

pcbValueOut
[Ausgabe] Die Gesamtanzahl der Bytes (mit Ausnahme des Null-Terminierungsbytes), die in rgbValueOut zurückgegeben werden können.

Wenn dies bei Zeichen- oder Binärdaten größer oder gleich cbValueOutMax ist, werden die Daten in rgbValueOutMax in cbValueOutMax-Bytes abgeschnitten.

Bei allen 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 Standarddatentyps C des SQL-Datentyps entspricht, der mit fSqlType angegeben 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, bei der Übersetzung ist ein Fehler aufgetreten.

cbErrorMsgMax
[Eingabe] Länge von szErrorMsg.

pcbErrorMsg
[Ausgabe] Zeiger auf die Gesamtanzahl von Bytes (mit Ausnahme des Null-Terminierungsbytes), die in szErrorMsg zurückgegeben werden können. Wenn dies größer oder gleich cbErrorMsg ist, werden die Daten in szErrorMsg auf cbErrorMsgMax abgeschnitten, abzüglich des Null-Terminierungszeichens. Das pcbErrorMsg-Argument kann ein NULL-Zeiger sein.

Gibt zurück

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

Kommentare

Der Treiber ruft SQLDriverToDataSource auf, um alle Daten (SQL-Anweisungen, Parameter usw.) zu übersetzen, die vom Treiber an die Datenquelle ü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 Codepage in eine andere übersetzt, alle numerischen und binären Daten.

Der Wert von fOption wird auf den Wert von vParam festgelegt, der durch Aufrufen von SQLSetConnectAttr mit dem attribut SQL_ATTR_TRANSLATE_OPTION angegeben 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 ist, wird die Übersetzung der Daten im Puffer durchgeführt.

Obwohl cbValueIn, cbValueOutMax und pcbValueOut vom Typ SDWORD sind, unterstützt SQLDriverToDataSource nicht unbedingt riesige Zeiger.

Wenn SQLDriverToDataSource FALSE zurückgibt, ist die Datenabkürzung möglicherweise während der Übersetzung aufgetreten. Wenn pcbValueOut (die Anzahl der bytes, die im Ausgabepuffer zurückgegeben werden können) größer ist als cbValueOutMax (die Länge des Ausgabepuffers), wurde abgeschnitten. Der Treiber muss ermitteln, ob die Abschneidung akzeptabel war. Wenn die Abschneidung nicht aufgetreten ist, hat SQLDriverToDataSource aufgrund eines anderen Fehlers FALSE zurückgegeben. In beiden Fällen wird eine bestimmte Fehlermeldung in szErrorMsg zurückgegeben.

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

Informationen über Finden Sie unter
Übersetzen von Aus der Datenquelle zurückgegebenen Daten SQLDataSourceToDriver
Zurückgeben der Einstellung eines Verbindungsattributes SQLGetConnectAttr
Festlegen eines Verbindungsattributes SQLSetConnectAttr