funkce SQLBrowseConnect

Soulad
Zavedená verze: ODBC 1.0 Soulad standardů: ODBC

Shrnutí
SQLBrowseConnect podporuje iterativní metodu objevování a vyjmenování atributů a hodnot atributů potřebných k připojení ke zdroji dat. Každé volání SQLBrowseConnect vrací postupné úrovně atributů a hodnot atributů. Po vyjmenování všech úrovní je spojení se zdrojem dat dokončeno a SQLBrowseConnect vrátí kompletní připojovací řetězec. Zpětný kód SQL_SUCCESS nebo SQL_SUCCESS_WITH_INFO znamená, že všechny informace o připojení byly specifikovány a aplikace je nyní připojena ke zdroji dat.

Syntax

  
SQLRETURN SQLBrowseConnect(  
     SQLHDBC         ConnectionHandle,  
     SQLCHAR *       InConnectionString,  
     SQLSMALLINT     StringLength1,  
     SQLCHAR *       OutConnectionString,  
     SQLSMALLINT     BufferLength,  
     SQLSMALLINT *   StringLength2Ptr);  

Arguments

ConnectionHandle
[Vstup] Popisovač připojení.

InConnectionString
[Vstup] Browse request připojovací řetězec (viz "InConnectionString Argument" v sekci "Comments").

StringLength1
[Vstup] Délka *InConnectionString ve znacích.

OutConnectionString
[Výstup] Ukazatel na znakovou buffer, do kterého se vrátí připojovací řetězec result browse (viz "OutConnectionString Argument" v "Comments").

Pokud je OutConnectionString NULL, StringLength2Ptr stále vrátí celkový počet znaků (kromě znaku null-termination pro znaková data), které lze vrátit v bufferu na který ukazuje OutConnectionString.

BufferLength
[Vstup] Délka v znacích bufferu *OutConnectionString .

StringLength2Ptr
[Výstup] Celkový počet znaků (bez null-termination), které lze vrátit v *OutConnectionString. Pokud je počet znaků dostupných k vrácení větší nebo roven BufferLength, připojovací řetězec v *OutConnectionString je zkrácen na BufferLength minus délka znaku null-terminace.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NEED_DATA, SQL_ERROR, SQL_INVALID_HANDLE nebo SQL_STILL_EXECUTING.

Diagnostics

Když SQLBrowseConnect vrátí SQL_ERROR, SQL_SUCCESS_WITH_INFO nebo SQL_NEED_DATA, lze získat přidruženou hodnotu SQLSTATE voláním SQLGetDiagRec s HandleType SQL_HANDLE_STMT a Handle ConnectionHandle. Následující tabulka uvádí hodnoty SQLSTATE, které SQLBrowseConnect běžně vrací, a vysvětluje každou z nich v kontextu této funkce; notace "(DM)" předchází popisům SQLstavů vráceným Správcem ovladačů. Návratový kód přidružený ke každé hodnotě SQLSTATE je SQL_ERROR, pokud není uvedeno jinak.

SQLSTATE Error Description
01000 Obecné upozornění Informační zpráva specifická pro řidiče (Funkce vrátí SQL_SUCCESS_WITH_INFO.)
01004 Řetězcová data, zkrácená vpravo Buffer *OutConnectionString nebyl dostatečně velký na to, aby vrátil celý připojovací řetězec z výsledků procházení, takže řetězec byl zkrácen. Buffer *StringLength2Ptr obsahuje délku neomezeného výsledku procházení připojovací řetězec. (Funkce vrací SQL_NEED_DATA.)
01S00 Neplatný atribut připojovací řetězec Neplatné klíčové slovo atributu bylo zadáno v připojovací řetězec pro žádost o prohlížení (InConnectionString). (Funkce vrací SQL_NEED_DATA.)

V atributovém připojovací řetězec (InConnectionString) bylo zadáno atributové klíčové slovo, které se nevztahuje na aktuální úroveň připojení. (Funkce vrací SQL_NEED_DATA.)
01S02 Změna hodnoty Ovladač nepodporoval zadanou hodnotu argumentu ValuePtr v SQLSetConnectAttr a nahradil podobnou hodnotou. (Funkce vrátí SQL_SUCCESS_WITH_INFO.)
08001 Klient nedokáže navázat spojení Ovladač nebyl schopen navázat spojení se zdrojem dat.
08002 Používaný název spojení (DM) Specifikované spojení již bylo použito k navázání spojení se zdrojem dat a spojení bylo otevřené.
08004 Server spojení odmítl Datový zdroj odmítl navázání spojení z důvodů definovaných implementací.
08S01 Selhání komunikačního propojení Komunikační spojení mezi ovladačem a datovým zdrojem, ke kterému se ovladač pokoušel připojit, selhalo dříve, než funkce dokončila zpracování.
28000 Specifikace neplatné autorizace Buď identifikátor uživatele, nebo autorizační řetězec, nebo obojí, jak je specifikováno v browse request připojovací řetězec (InConnectionString), porušily omezení definovaná datovým zdrojem.
HY000 Obecná chyba Došlo k chybě, pro kterou nebyla definována žádná specifická funkce SQLSTATE a pro kterou nebyla definována žádná implementace sqlSTATE. Chybová zpráva vrácená nástrojem SQLGetDiagRec v vyrovnávací paměti *MessageText popisuje chybu a její příčinu.
HY001 Chyba přidělení paměti (DM) Správce ovladačů nebyl schopen přidělit paměť potřebnou k podpoře nebo dokončení funkce.

Ovladač nemohl přidělit paměť potřebnou k podpoře provádění nebo dokončení funkce.
HY008 Operace byla zrušena. Asynchronní operace byla zrušena voláním funkce SQLCancelHandle. Poté byla původní funkce znovu volána na ConnectionHandle.

Operace byla zrušena vyvolání SQLCancelHandle na ConnectionHandle z jiného vlákna v multithread aplikaci.
HY010 Chyba posloupnosti funkcí (DM) Asynchronně vykonávající funkce (ne tato) byla volána pro ConnectionHandle a stále se spouštěla, když byla tato funkce vyvolána.
HY013 Chyba správy paměti Volání funkce nelze zpracovat, protože základní objekty paměti nelze získat přístup, pravděpodobně kvůli nedostatku paměti.
HY090 Neplatná délka řetězce nebo vyrovnávací paměti (DM) Hodnota zadaná pro argument StringLength1 byla menší než 0 a nebyla rovna SQL_NTS.

(DM) Hodnota zadaná pro argument BufferLength byla menší než 0.
HY114 Ovladač nepodporuje asynchronní provádění funkcí na úrovni spojení (DM) Aplikace povolila asynchronní operaci na rukojeti spojení před navázáním spojení. Ovladač však nepodporuje asynchronní provoz na rozhraní pro připojení.
HYT00 Vypršel časový limit. Doba vypršení přihlašovacího systému vypršela dříve, než bylo spojení se zdrojem dat dokončeno. Časová doba je nastavena přes SQLSetConnectAttr, SQL_ATTR_LOGIN_TIMEOUT.
HYT01 Vypršel časový limit připojení Platnost časového limitu připojení vypršela, než zdroj dat odpověděl na žádost. Časový limit připojení je nastavený prostřednictvím sqlSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Ovladač tuto funkci nepodporuje. (DM) Ovladač odpovídající specifikovanému názvu zdroje dat tuto funkci nepodporuje.
IM002 Zdroj dat nenalezen a není uveden žádný výchozí ovladač (DM) Název zdroje dat uvedený v připojovací řetězec pro žádost o prohlížení (InConnectionString) nebyl v systémových informacích nalezen, ani neexistovala výchozí specifikace ovladače.

(DM) Zdroj dat ODBC a výchozí informace o ovladači nebyly nalezeny v systémových informacích.
IM003 Specifikovaný ovladač nemohl být načítán (DM) Ovladač uvedený ve specifikaci zdroje dat v systémových informacích nebo specifikovaný klíčovým slovem DRIVER nebyl nalezen nebo nemohl být nahrán z jiného důvodu.
IM004 Driver's SQLAllocHandle na SQL_HANDLE _ENV selhal (DM) Během SQLBrowseConnect správce ovladačů volal funkci SQLAllocHandle ovladače pomocí HandleType SQL_HANDLE_ENV a ovladač vrátil chybu.
IM005 Driver's SQLAllocHandle na SQL_HANDLE_DBC selhal (DM) Během SQLBrowseConnect správce ovladačů volal funkci SQLAllocHandle ovladače pomocí SQL_HANDLE_DBC HandleType a ovladač vrátil chybu.
IM006 Driver SQLSetConnectAttr selhal (DM) Během SQLBrowseConnect správce ovladačů zavolal funkci SQLSetConnectAttr ovladače a ovladač vrátil chybu.
IM009 Nelze načíst překlad DLL Ovladač nebyl schopen načíst překladovou DLL, která byla určena pro datový zdroj ani pro spojení.
IM010 Název zdroje dat je příliš dlouhý (DM) Hodnota atributu pro klíčové slovo DSN byla delší než SQL_MAX_DSN_LENGTH znaků.
IM011 Jméno řidiče je příliš dlouhé (DM) Hodnota atributu klíčového slova DRIVER byla delší než 255 znaků.
IM012 Chyba syntaxe klíčových slov v DRIVER (DM) Pár klíčových slov a hodnoty pro klíčové slovo DRIVER obsahoval syntaktickou chybu.
IM014 Specifikované DSN obsahuje architektonickou nesoulad mezi ovladačem a aplikací (DM) 32bitová aplikace používá DSN připojené k 64bitovému ovladači; Nebo naopak.
IM017 Dotazování je zakázané v asynchronním režimu oznámení. Při každém použití modelu oznámení je dotazování zakázané.
IM018 K dokončení předchozí asynchronní operace na tomto popisovači nebyla volána funkce SQLCompleteAsync. Pokud předchozí volání funkce na popisovači vrátí SQL_STILL_EXECUTING a pokud je povolen režim oznámení, musí být sqlCompleteAsync volán na popisovači, aby bylo možné provést následné zpracování a dokončit operaci.
S1118 Ovladač nepodporuje asynchronní notifikace Pokud ovladač nepodporuje asynchronní oznámení, nelze nastavit SQL_ATTR_ASYNC_DBC_EVENT ani SQL_ATTR_ASYNC_DBC_RETCODE_PTR.

InConnectionString Argument

Browse request připojovací řetězec má následující syntaxi:

connection-string ::= atribut[;] | Atribut;spojovací řetězec;
atribut ::= atribut-klíčové slovo=atribut-hodnota | DRIVER=[{]atribut-hodnota[}]
attribute-keyword ::= DSN | | UID | PWDdriver-defined-attribute-keyword
attribute-value ::= znakový řetězec
identifikátor driver-defined-attribute-keyword ::= identifikátor

kde řetězec znaků má nula nebo více znaků; identifikátor má jeden nebo více znaků; attribute-keyword není rozlišující velká písmena; hodnota atributu může být rozlišující na velikost písmen; a hodnota klíčového slova DSN není pouze z prázdných míst. Kvůli gramatice připojovací řetězec a inicializačního souboru jsou klíčová slova a hodnoty atributů obsahující znaky []{}(),;? *=!@ by se mělo vyhnout. Kvůli gramatice systémových informací nemohou klíčová slova a názvy datových zdrojů obsahovat znak zpětné lomítky (\). Pro ODBC 2. x driver, závorky jsou vyžadovány kolem hodnoty atributu pro klíčové slovo DRIVER.

Pokud se v search request připojovací řetězec opakují jakákoli klíčová slova, ovladač použije hodnotu spojenou s prvním výskytem klíčového slova. Pokud jsou klíčová slova DSN a DRIVER zahrnuta ve stejném připojovací řetězec pro žádost o prohlížení, Driver Manager a ovladač použijí to klíčové slovo, které se objeví jako první.

Pro informace o tom, jak aplikace vybírá zdroj dat nebo ovladač, viz Výběr zdroje dat nebo ovladače.

OutConnectionString Argument

Browse result připojovací řetězec je seznam atributů connection. Atribut spojení se skládá z klíčového slova atributu a odpovídající hodnoty atributu. Browse result připojovací řetězec má následující syntaxi:

connection-string ::= atribut[;] | Atribut;spojovací řetězec
atribut ::= [*]attribute-keyword=attribute-value
attribute-keyword ::= ODBC-attribute-keyword | driver-defined-attribute-keyword
ODBC-atribut-klíčové slovo = {UIDPWD | }[:lokalizovaný-identifikátor] driver-defined-attribute-keyword ::= identifier[:localized-identifier] attribute-value ::= {attribute-value-list} | ? (Závorky jsou doslovné; ovladač je vrací.)
atribut-hodnota-seznam ::= znakový řetězec [:lokalizovaný znakový řetězec] | znakový řetězec [:lokalizovaný znakový řetězec] ,seznam atributů-hodnot

kde řetězec znaků a řetězec lokalizovaných znaků mají nula nebo více znaků; identifikátor a lokalizovaný identifikátor mají jeden nebo více znaků; attribute-keyword není rozlišující velká písmena; a hodnota atributu může být rozlišující na velikost a pád. Kvůli gramatice připojovací řetězec a inicializačního souboru, klíčovým slovům, lokalizovaným identifikátorům a hodnotám atributů obsahujících znaky []{}(),;? *=!@ by se mělo vyhnout. Kvůli gramatice systémových informací nemohou klíčová slova a názvy datových zdrojů obsahovat znak zpětné lomítky (\).

Syntax připojovací řetězec výsledků procházení se používá podle následujících sémantických pravidel:

  • Pokud hvězdička (*) předchází atribut-klíčové slovo, atribut je volitelný a může být vynechán při dalším volání do SQLBrowseConnect.

  • Klíčová slova atributů UID a PWD mají stejný význam, jaký je definován v SQLDriverConnect.

  • Driverem definované-atribut-klíčové slovo pojmenovává typ atributu, pro který může být hodnota atributu zadána. Například to může být SERVER, DATABASE, HOST nebo DBMS.

  • ODBC-atribut-klíčová slova a driver-defined-attribute-keywords obsahují lokalizovanou nebo uživatelsky přívětivou verzi klíčového slova. To může být aplikací použito jako štítek v dialogovém okně. Při předávání řetězce požadavku na prohlížení ovladači však musí být použito pouze UID, PWD nebo samotný identifikátor .

  • {seznam atributů-hodnot} je výčet skutečných hodnot platných pro odpovídající atribut-klíčové slovo. Všimněte si, že závorky ({}) neoznačují seznam možností; jsou vráceny řidičem. Například to může být seznam jmen serverů nebo seznam jmen databází.

  • Pokud je hodnota atributu jedním otazníkem (?), jedna hodnota odpovídá klíčovému slovu atributu. Například UID = JohnS; PWD = Sezam.

  • Každý hovor do SQLBrowseConnect vrací pouze informace potřebné k dosažení další úrovně procesu připojení. Ovladač přiřazuje informace o stavu k rukojeti spojení, aby bylo možné vždy určit kontext u každého hovoru.

Použití SQLBrowseConnect

SQLBrowseConnect vyžaduje přidělené připojení. Driver Manager načítá ovladač, který byl specifikován v nebo odpovídá názvu zdroje dat uvedenému v počátečním připojovací řetězec pro požadavek na prohlížení; informace o tom, kdy k tomu dochází, viz sekce "Komentáře" ve funkci SQLConnect. Ovladač může během prohlížení navázat spojení se zdrojem dat. Pokud SQLBrowseConnect vrátí SQL_ERROR, nevyřazená spojení jsou ukončena a spojení se vrátí do stavu nepřipojeného.

Note

SQLBrowseConnect nepodporuje poolování spojení. Pokud je SQLBrowseConnect vyvolán při zapnutí poolování spojení, vrátí se SQLSTATE HY000 (obecná chyba).

Když je SQLBrowseConnect poprvé vyvolán na spojení, musí připojovací řetězec pro požadavek na prohlížení obsahovat klíčové slovo DSN nebo DRIVER. Pokud připojovací řetězec search search obsahuje klíčové slovo DSN, Driver Manager najde odpovídající specifikaci zdroje dat v systémových informacích:

  • Pokud správce ovladačů najde odpovídající specifikaci zdroje dat, načte příslušnou DLL ovladače; Ovladač může získat informace o datovém zdroji ze systémových informací.

  • Pokud správce ovladačů nemůže najít odpovídající specifikaci zdroje dat, najde výchozí specifikaci zdroje a načte příslušnou DLL ovladače; Ovladač může získat informace o výchozím datovém zdroji ze systémových informací. "DEFAULT" je předáno řidiči DSN.

  • Pokud správce ovladačů nemůže najít odpovídající specifikaci zdroje dat a neexistuje výchozí specifikace zdroje, vrátí SQL_ERROR pomocí SQLSTATE IM002 (Zdroj dat nenalezen a výchozí ovladač není určen).

Pokud připojovací řetězec pro žádost o prohlížení obsahuje klíčové slovo DRIVER, správce ovladačů načte specifikovaný ovladač; nesnaží se najít zdroj dat v systémových informacích. Protože klíčové slovo DRIVER nevyužívá informace ze systémových informací, musí ovladač definovat dostatek klíčových slov, aby se ovladač mohl připojit ke zdroji dat pouze pomocí informací v řetězcích spojení požadavků na prohlížení.

Při každém volání SQLBrowseConnect aplikace specifikuje hodnoty atributů connection v připojovací řetězec pro požadavek na prohlížení. Ovladač vrací postupné úrovně atributů a hodnot atributů ve výsledku prohlížení připojovací řetězec; vrací SQL_NEED_DATA, pokud existují atributy připojení, které ještě nebyly vyčísleny v připojovací řetězec žádosti o prohlížení. Aplikace využívá obsah browse result připojovací řetězec k vytvoření browse request připojovací řetězec pro další volání SQLBrowseConnect. Všechny povinné atributy (ty, které nejsou v argumentu OutConnectionString předcházeny hvězdičkou) musí být zahrnuty v dalším volání SQLBrowseConnect. Všimněte si, že aplikace nemůže použít obsah předchozích search result připojovací řetězeců při vytváření aktuálního browse request připojovací řetězec; to znamená, že nemůže specifikovat různé hodnoty atributů nastavených v předchozích úrovních.

Když jsou všechny úrovně spojení a jejich přidružené atributy vyčísleny, ovladač vrátí SQL_SUCCESS, spojení se zdrojem dat je dokončeno a aplikaci se vrátí kompletní připojovací řetězec. připojovací řetězec je vhodný pro použití ve spojení se SQLDriverConnect s možností SQL_DRIVER_NOPROMPT navázat další připojení. Kompletní připojovací řetězec však nelze použít v jiném volání SQLBrowseConnect; pokud by byl SQLBrowseConnect znovu volán, musela by se celá sekvence volání opakovat.

SQLBrowseConnect také vrací SQL_NEED_DATA, zda během procházení dojde k obnovitelným, nefatálním chybám; například neplatné heslo nebo klíčové slovo atributu zadané aplikací. Když je SQL_NEED_DATA vrácen a výsledek prohlížení připojovací řetězec zůstane nezměněn, došlo k chybě a aplikace může zavolat SQLGetDiagRec, aby vrátila SQLSTATE pro chyby při prohlížení. To umožňuje aplikaci opravit atribut a pokračovat v prohlížení.

Aplikace může kdykoli ukončit proces prohlížení voláním SQLDisconnect. Ovladač ukončí všechna nevyřízená spojení a vrátí spojení do nepřipojeného stavu.

Pokud jsou na rozhraní připojení povoleny asynchronní operace, může SQLBrowseConnect také vrátit SQL_STILL_EXECUTING. Když se SQL_NEED_DATA vrátí, aplikace musí použít SQLDisconnect k ukončení procesu prohlížení. Pokud SQLBrowseConnect vrátí SQL_STILL_EXECUTING, aplikace by měla použít SQLCancelHandle k ukončení probíhající operace. Volání SQLCancelHandle poté, co funkce vrátí SQL_NEED_DATA nemá žádný efekt.

Pro více informací viz Connecting with SQLBrowseConnect.

Pokud ovladač podporuje SQLBrowseConnect, musí sekce klíčových slov v systémových informacích pro ovladač obsahovat klíčové slovo ConnectFunctions s třetím znakem "Y."

Příklad kódu

Note

Pokud se připojujete k poskytovateli zdroje dat, který podporuje ověřování systému Windows, měli byste místo ID uživatele a informací o hesle zadat Trusted_Connection=yes v připojovacím řetězci.

V následujícím příkladu aplikace opakovaně volá SQLBrowseConnect . Pokaždé, když SQLBrowseConnect vrátí SQL_NEED_DATA, předává zpět informace o datech, která potřebuje v *OutConnectionString. Aplikace předává OutConnectionString do své rutiny GetUserInput (není zobrazeno). GetUserInput analyzuje informace, vytváří a zobrazuje dialogové okno a vrací informace zadané uživatelem v *InConnectionString. Aplikace předá uživatelské informace ovladači při dalším hovoru na SQLBrowseConnect. Poté, co aplikace poskytne všechny potřebné informace pro připojení ovladače ke zdroji dat, SQLBrowseConnect vrátí SQL_SUCCESS a aplikace pokračuje.

Pro podrobnější příklad připojení k ovladači SQL Server voláním SQLBrowseConnect viz SQL Server Browsing Example.

Například pro připojení ke zdroji dat Sales mohou proběhnout následující akce. Nejprve aplikace předá následující řetězec do SQLBrowseConnect:

"DSN=Sales"  

Driver Manager načte ovladač spojený se zdrojem dat Sales. Poté volá funkci SQLBrowseConnect ovladače se stejnými argumenty, které obdržela od aplikace. Ovladač vrací následující řetězec v *OutConnectionString:

"HOST:Server={red,blue,green};UID:ID=?;PWD:Password=?"  

Aplikace tento řetězec předává své rutině GetUserInput , která vytvoří dialogové okno s výzvou uživatele k výběru červeného, modrého nebo zeleného serveru a zadání uživatelského ID a hesla. Rutina předává následující uživatelem zadané informace zpět do *InConnectionString, které aplikace předává SQLBrowseConnect:

"HOST=red;UID=Smith;PWD=Sesame"  

SQLBrowseConnect využívá tyto informace k připojení k červenému serveru jako Smith s heslem Sesame a poté vrací následující řetězec v *OutConnectionString:

"*DATABASE:Database={SalesEmployees,SalesGoals,SalesOrders}"  

Aplikace tento řetězec předává své rutině GetUserInput , která vytvoří dialogové okno s výzvou uživatele k výběru databáze. Uživatel vybere empdata a aplikace volá SQLBrowseConnect naposledy s tímto řetězcem:

"DATABASE=SalesOrders"  

Toto je poslední informace, kterou ovladač potřebuje k připojení ke zdroji dat; SQLBrowseConnect vrací SQL_SUCCESS a *OutConnectionString obsahuje dokončený připojovací řetězec:

// SQLBrowseConnect_Function.cpp  
// compile with: odbc32.lib  
#include <windows.h>  
#include <sqltypes.h>  
#include <sqlext.h>  
  
#define BRWS_LEN 100  
SQLHENV henv;  
SQLHDBC hdbc;  
SQLHSTMT hstmt;  
SQLRETURN retcode;  
SQLCHAR szConnStrIn[BRWS_LEN], szConnStrOut[BRWS_LEN];  
SQLSMALLINT cbConnStrOut;  
  
void GetUserInput(SQLCHAR * szConnStrOut, SQLCHAR * szConnStrIn) {}  
  
int main() {  
   // Allocate the environment handle.  
   retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);        
   if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {  
  
      // Set the version environment attribute.  
      retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER*)SQL_OV_ODBC3, 0);  
      if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {  
  
         // Allocate the connection handle.  
         retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);  
         if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {  
            // Call SQLBrowseConnect until it returns a value other than SQL_NEED_DATA   
            // (pass data source name the first time).  If SQL_NEED_DATA is returned, call GetUserInput   
            // (not shown) to build a dialog from the values in szConnStrOut.  The user-supplied values   
            // are returned in szConnStrIn, which is passed in the next call to SQLBrowseConnect.  
  
            strcpy_s((char*)szConnStrIn, _countof(szConnStrIn), "DSN=Sales");  
            do {  
               retcode = SQLBrowseConnect(hdbc, szConnStrIn, SQL_NTS,  
                  szConnStrOut, BRWS_LEN, &cbConnStrOut);  
               if (retcode == SQL_NEED_DATA)  
                  GetUserInput(szConnStrOut, szConnStrIn);  
            } while (retcode == SQL_NEED_DATA);  
  
            if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){  
  
               // Allocate the statement handle.  
               retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);  
  
               if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)  
                  // Process data after successful connection  
                  SQLFreeHandle(SQL_HANDLE_STMT, hstmt);  
               SQLDisconnect(hdbc);  
            }  
         }  
         SQLFreeHandle(SQL_HANDLE_DBC, hdbc);  
      }  
   }  
   SQLFreeHandle(SQL_HANDLE_ENV, henv);  
}  
Informace o Podívejte se
Přiřazení rukojeti spojení SQLAllocHandle Function
Připojení ke zdroji dat Funkce SQLConnect
Odpojení od datového zdroje Funkce SQLDisconnect
Připojení ke zdroji dat pomocí připojovací řetězec nebo dialogového okna FUNKCE SQLDriverConnect
Vracející se popisy a atributy jezdců Funkce SQLDrivers
Uvolnění rukojeti spojení Funkce SQLFreeHandle

Viz také

Referenční rozhraní ODBC API
Soubory hlaviček ODBC