FUNKCE SQLDataSourceToDriver
SQLDataSourceToDriver podporuje překlady ovladačů ODBC. Tato funkce není volána aplikacemi s podporou ROZHRANÍ ODBC; aplikace požadovat překlad prostřednictvím SQLSetConnectAttr. Ovladač přidružený k ConnectionHandle zadaný v SQLSetConnectAttr volá zadanou knihovnu DLL k provádění překladů všech dat proudící ze zdroje dat do ovladače. Výchozí knihovnu DLL překladu lze zadat v souboru inicializace ODBC.
Syntax
BOOL SQLDataSourceToDriver(
UDWORD fOption,
SWORD fSqlType,
PTR rgbValueIn,
SDWORD cbValueIn,
PTR rgbValueOut,
SDWORD cbValueOutMax,
SDWORD * pcbValueOut,
UCHAR * szErrorMsg,
SWORD cbErrorMsgMax,
SWORD * pcbErrorMsg);
Argumenty
fOption
[Vstup] Hodnota možnosti.
fSqlType
[Vstup] Datový typ SQL. Tento argument říká ovladači, jak převést rgbValueIn do formuláře přijatelného aplikací. Seznam platných datových typů SQL najdete v části datových typů SQL v dodatku D: Datové typy.
rgbValueIn
[Vstup] Hodnota, která se má přeložit
cbValueIn
[Vstup] Délka rgbValueIn.
rgbValueOut
[Výstup] Výsledek překladu
Poznámka
Knihovna DLL překladu tuto hodnotu neukončila hodnotou null.
cbValueOutMax
[Vstup] Délka rgbValueOut.
pcbValueOut
[Výstup] Celkový počet bajtů (s výjimkou bajtu ukončení s hodnotou null) dostupný k vrácení v rgbValueOut.
U znakových nebo binárních dat je-li tato hodnota větší nebo rovna cbValueOutMax, data v rgbValueOut jsou zkrácena na cbValueOutMax bajty.
U všech ostatních datových typů je hodnota cbValueOutMax ignorována a knihovna DLL překladu předpokládá, že velikost rgbValueOut je velikost výchozího datového typu C datového typu SQL zadaného fSqlType.
Argument pcbValueOut může být nulový ukazatel.
szErrorMsg
[Výstup] Ukazatel na úložiště pro chybovou zprávu Jedná se o prázdný řetězec, pokud se překlad nepovedl.
cbErrorMsgMax
[Vstup] Délka szErrorMsg.
pcbErrorMsg
[Výstup] Ukazatel na celkový počet bajtů (s výjimkou bajtů ukončení s hodnotou null), které lze vrátit v szErrorMsg. Pokud je tato hodnota větší nebo rovna cbErrorMsg, data v szErrorMsg se zkrátí na cbErrorMsgMax minus znak ukončení s hodnotou null.
pcbErrorMsg argument může být nulový.
Návraty
TRUE, pokud byl překlad úspěšný, nePRAVDA, pokud se překlad nezdařil.
Komentáře
Ovladač volá SQLDataSourceToDriver k překladu alldata (data sady výsledků, názvy tabulek, počty řádků, chybové zprávy atd.) předávané ze zdroje dat ovladači. Knihovna DLL překladu nemusí překládat některá data v závislosti na typu dat a účelu knihovny DLL překladu; Například knihovna DLL, která překládá znaková data z jedné znakové stránky na jinou, ignoruje všechna číselná a binární data.
Hodnota fOption je nastavena na hodnotu vParam určené voláním SQLSetConnectAttr s atributem SQL_ATTR_TRANSLATE_OPTION. Jedná se o 32bitovou hodnotu, která má specifický význam pro danou knihovnu DLL překladu. Může například zadat určitý překlad znakové sady.
Pokud je pro rgbValueIn a rgbValueOutzadaná stejná vyrovnávací paměť, provede se překlad dat v vyrovnávací paměti.
I když cbValueIn, cbValueOutMaxa pcbValueOut jsou typu SDWORD, SQLDataSourceToDriver nemusí nutně podporovat obrovské ukazatele.
Pokud SQLDataSourceToDriver vrátí hodnotu FALSE, mohlo dojít ke zkrácení dat během překladu. Pokud pcbValueOut (počet bajtů dostupných pro vrácení ve výstupní vyrovnávací paměti) je větší než cbValueOutMax (délka výstupní vyrovnávací paměti), pak došlo ke zkrácení. Ovladač musí určit, zda bylo zkrácení přijatelné. Pokud k zkrácení nedošlo, SQLDataSourceToDriver vrátil hodnotu FALSE kvůli jiné chybě. V obou případech se v szErrorMsg vrátí konkrétní chybová zpráva.
Další informace o překladu dat naleznete v tématu knihovny DLL překladu.
Související funkce
Informace o | Vidět |
---|---|
Překlad dat odesílaných do zdroje dat | SQLDriverToDataSource |
Vrácení nastavení atributu připojení | SQLGetConnectAttr |
Nastavení atributu připojení | SQLSetConnectAttr |