Delen via


SQLDataSourceToDriver, functie

SQLDataSourceToDriver- ondersteunt vertalingen voor ODBC-stuurprogramma's. Deze functie wordt niet aangeroepen door ODBC-toepassingen; toepassingen vragen om vertaling via SQLSetConnectAttr-. Het stuurprogramma dat is gekoppeld aan de ConnectionHandle- die is opgegeven in SQLSetConnectAttr roept de opgegeven DLL aan om vertalingen uit te voeren van alle gegevens die van de gegevensbron naar het stuurprogramma stromen. Een standaard-DLL voor vertaling kan worden opgegeven in het ODBC-initialisatiebestand.

Syntaxis

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

Argumenten

fOption-
[Invoer] Optiewaarde.

fSqlType-
[Invoer] Het SQL-gegevenstype. Dit argument geeft aan hoe het stuurprogramma rgbValueIn- converteert naar een formulier dat acceptabel is voor de toepassing. Zie de sectie SQL-gegevenstypen in bijlage D: Gegevenstypen voor een lijst met geldige SQL-gegevenstypen.

rgbValueIn-
[Invoer] Waarde die moet worden vertaald.

cbValueIn-
[Invoer] De lengte van rgbValueIn.

rgbValueOut-
[Uitvoer] Resultaat van de vertaling.

Notitie

De vertaal-DLL beëindigt deze waarde niet door null.

cbValueOutMax
[Invoer] Lengte van rgbValueOut-.

pcbValueOut-
[Uitvoer] Het totale aantal bytes (met uitzondering van de byte voor null-beëindiging) dat beschikbaar is om te retourneren in rgbValueOut-.

Als dit voor tekens of binaire gegevens groter is dan of gelijk is aan cbValueOutMax, worden de gegevens in rgbValueOut- afgekapt tot cbValueOutMax bytes.

Voor alle andere gegevenstypen wordt de waarde van cbValueOutMax genegeerd en wordt in de vertaal-DLL ervan uitgegaan dat de grootte van rgbValueOut- de grootte is van het standaard-C-gegevenstype van het SQL-gegevenstype dat is opgegeven met fSqlType-.

Het argument pcbValueOut kan een null-aanwijzer zijn.

szErrorMsg-
[Uitvoer] Aanwijzer naar opslag voor een foutbericht. Dit is een lege tekenreeks, tenzij de vertaling is mislukt.

cbErrorMsgMax
[Invoer] Lengte van szErrorMsg.

pcbErrorMsg
[Uitvoer] Wijs de aanwijzer naar het totale aantal bytes (met uitzondering van de byte voor null-beëindiging) dat kan worden geretourneerd in szErrorMsg-. Als dit groter is dan of gelijk is aan cbErrorMsg, worden de gegevens in szErrorMsg afgekapt tot cbErrorMsgMax min het teken null-beëindiging. Het argument pcbErrorMsg kan een null-aanwijzer zijn.

Retourneert

WAAR als de vertaling is geslaagd, ONWAAR als de vertaling is mislukt.

Opmerkingen

Het stuurprogramma roept SQLDataSourceToDriver- aan om alldata (resultatensetgegevens, tabelnamen, rijaantallen, foutberichten, enzovoort) door te geven van de gegevensbron naar het stuurprogramma. Het vertaal-DLL-bestand vertaalt mogelijk bepaalde gegevens niet, afhankelijk van het type gegevens en het doel van het dll-bestand voor vertaling; Een DLL die tekengegevens van de ene codepagina naar de andere vertaalt, negeert bijvoorbeeld alle numerieke en binaire gegevens.

De waarde van fOption- wordt ingesteld op de waarde van vParam- die is opgegeven door SQLSetConnectAttr- aan te roepen met het kenmerk SQL_ATTR_TRANSLATE_OPTION. Het is een 32-bits waarde met een specifieke betekenis voor een bepaalde vertaal-DLL. Het kan bijvoorbeeld een bepaalde tekensetomzetting opgeven.

Als dezelfde buffer is opgegeven voor rgbValueIn- en rgbValueOut-, wordt de vertaling van gegevens in de buffer uitgevoerd.

Hoewel cbValueIn, cbValueOutMaxen pcbValueOut van het type SDWORD zijn, worden SQLDataSourceToDriver- niet per se ondersteuning geboden voor enorme aanwijzers.

Als SQLDataSourceToDriver ONWAAR retourneert, is het mogelijk dat gegevens tijdens de vertaling zijn afgekapt. Als pcbValueOut (het aantal beschikbare bytes in de uitvoerbuffer) groter is dan cbValueOutMax (de lengte van de uitvoerbuffer), is afkapping opgetreden. De bestuurder moet bepalen of de afkapping acceptabel was. Als afkapping niet is opgetreden, heeft de SQLDataSourceToDrive r ONWAAR geretourneerd vanwege een andere fout. In beide gevallen wordt een specifiek foutbericht geretourneerd in szErrorMsg.

Zie Vertaal-DLL'svoor meer informatie over het vertalen van gegevens.

Voor informatie over Zien
Gegevens vertalen die naar de gegevensbron worden verzonden SQLDriverToDataSource-
De instelling van een verbindingskenmerk retourneren SQLGetConnectAttr-
Een verbindingskenmerk instellen SQLSetConnectAttr-