SQLDataSourceToDriver-funktion
SQLDataSourceToDriver stöder översättningar för ODBC-drivrutiner. Den här funktionen anropas inte av ODBC-aktiverade program. program begär översättning via SQLSetConnectAttr. Drivrutinen som är associerad med ConnectionHandle som anges i SQLSetConnectAttr anropar den angivna DLL:en för att utföra översättningar av alla data som flödar från datakällan till drivrutinen. En standardöversättnings-DLL kan anges i ODBC-initieringsfilen.
Syntax
BOOL SQLDataSourceToDriver(
UDWORD fOption,
SWORD fSqlType,
PTR rgbValueIn,
SDWORD cbValueIn,
PTR rgbValueOut,
SDWORD cbValueOutMax,
SDWORD * pcbValueOut,
UCHAR * szErrorMsg,
SWORD cbErrorMsgMax,
SWORD * pcbErrorMsg);
Argument
fOption
[Indata] Alternativvärde.
fSqlType
[Indata] SQL-datatypen. Det här argumentet talar om för drivrutinen hur du konverterar rgbValueIn till ett formulär som godkänts av programmet. En lista över giltiga SQL-datatyper finns i avsnittet SQL Data Types i Bilaga D: Datatyper.
rgbValueIn
[Indata] Värde att översätta.
cbValueIn
[Indata] Längden på rgbValueIn.
rgbValueOut
[Utdata] Resultatet av översättningen.
Not
Översättnings-DLL:en avslutar inte värdet null.
cbValueOutMax
[Indata] Längden på rgbValueOut.
pcbValueOut
[Utdata] Det totala antalet byte (exklusive byte för null-avslutning) som kan returneras i rgbValueOut.
Om detta är större än eller lika med cbValueOutMax, trunkeras data i rgbValueOut till cbValueOutMax byte.
För alla andra datatyper ignoreras värdet för cbValueOutMax och översättnings-DLL förutsätter att storleken på rgbValueOut är storleken på C-standarddatatypen för den SQL-datatyp som anges med fSqlType.
Argumentet pcbValueOut kan vara en null-pekare.
szErrorMsg
[Utdata] Pekare till lagring för ett felmeddelande. Det här är en tom sträng om inte översättningen misslyckades.
cbErrorMsgMax
[Indata] Längden på szErrorMsg.
pcbErrorMsg
[Utdata] Pekare till det totala antalet byte (exklusive null-avslutningsbyte) som kan returneras i szErrorMsg. Om detta är större än eller lika med cbErrorMsgtrunkeras data i szErrorMsg till cbErrorMsgMax minus null-avslutningstecknet. Argumentet pcbErrorMsg kan vara en null-pekare.
Returnerar
SANT om översättningen lyckades, FALSE om översättningen misslyckades.
Kommentarer
Drivrutinen anropar SQLDataSourceToDriver för att översätta alldata (resultatuppsättningsdata, tabellnamn, radantal, felmeddelanden och så vidare) som skickas från datakällan till drivrutinen. Översättnings-DLL:en kanske inte översätter vissa data, beroende på datatypen och syftet med översättnings-DLL:en. En DLL som översätter teckendata från en kodsida till en annan ignorerar till exempel alla numeriska och binära data.
Värdet för fOption anges till värdet för vParam som anges genom att anropa SQLSetConnectAttr med attributet SQL_ATTR_TRANSLATE_OPTION. Det är ett 32-bitarsvärde som har en specifik betydelse för en viss översättnings-DLL. Den kan till exempel ange en viss teckenuppsättningsöversättning.
Om samma buffert anges för rgbValueIn och rgbValueOututförs översättningen av data i bufferten på plats.
Även om cbValueIn, cbValueOutMaxoch pcbValueOut är av typen SDWORD, stöder SQLDataSourceToDriver inte nödvändigtvis enorma pekare.
Om SQLDataSourceToDriver- returnerar FALSE kan datatrunkering ha inträffat under översättningen. Om pcbValueOut- (antalet byte som är tillgängliga för att returnera i utdatabufferten) är större än cbValueOutMax- (längden på utdatabufferten) inträffade trunkeringen. Drivrutinen måste avgöra om trunkeringen var acceptabel. Om trunkeringen inte inträffade returnerade SQLDataSourceToDriver FALSE på grund av ett annat fel. I båda fallen returneras ett specifikt felmeddelande i szErrorMsg.
Mer information om hur du översätter data finns i översättnings-DLL:er.
Relaterade funktioner
Mer information om | Se |
---|---|
Översätta data som skickas till datakällan | SQLDriverToDataSource |
Returnera inställningen för ett anslutningsattribut | SQLGetConnectAttr |
Ange ett anslutningsattribut | SQLSetConnectAttr |