Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Následující příklad ukazuje, jak se sqlBrowseConnect může použít k procházení připojení dostupných s ovladačem pro SQL Server. Nejprve aplikace požádá o popisovač připojení:
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
Dále aplikace volá SQLBrowseConnect a určuje ovladač SQL Serveru pomocí popisu ovladače vrácené sqlDrivers:
SQLBrowseConnect(hdbc, "DRIVER={SQL Server};", SQL_NTS, BrowseResult,
sizeof(BrowseResult), &BrowseResultLen);
Vzhledem k tomu, že se jedná o první volání SQLBrowseConnect, správce ovladačů načte ovladač SQL Serveru a zavolá funkci SQLBrowseConnect ovladače se stejnými argumenty, které přijala z aplikace.
Poznámka:
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.
Ovladač určuje, že se jedná o první volání SQLBrowseConnect a vrátí druhou úroveň atributů připojení: server, uživatelské jméno, heslo, název aplikace a ID pracovní stanice. Pro atribut serveru vrátí seznam platných názvů serverů. Návratový kód z SQLBrowseConnect je SQL_NEED_DATA. Tady je řetězec výsledků procházení:
"SERVER:Server={red,blue,green,yellow};UID:Login ID=?;PWD:Password=?;
*APP:AppName=?;*WSID:WorkStation ID=?;"
Za každým klíčovým slovem ve výsledném řetězci procházení následuje dvojtečka a jedno nebo více slov před znaménkem rovná se. Tato slova jsou uživatelsky přívětivý název, který může aplikace použít k vytvoření dialogového okna. Klíčová slova APP a WSID jsou předponou hvězdičky, což znamená, že jsou volitelné. Klíčová slova SERVER, UID a PWD nejsou uvedena s předponou hvězdičky; hodnoty pro ně musí být zadány v řetězci následující žádosti o procházení. Hodnota klíčového slova SERVER může být jedním ze serverů vrácených sqlBrowseConnect nebo uživatelem zadaným názvem.
Aplikace znovu volá SQLBrowseConnect , zadává zelený server a vynechá klíčová slova APP a WSID a uživatelsky přívětivé názvy za každým klíčovým slovem:
SQLBrowseConnect(hdbc, "SERVER=green;UID=Smith;PWD=Sesame;", SQL_NTS,
BrowseResult, sizeof(BrowseResult), &BrowseResultLen);
Ovladač se pokusí připojit k zelenému serveru. Pokud existují nějaké méně závažné chyby, například chybějící pár klíčových slov, vrátí SQLBrowseConnect SQL_NEED_DATA a zůstane ve stejném stavu jako před chybou. Aplikace může volat SQLGetDiagField nebo SQLGetDiagRec k určení chyby. Pokud je připojení úspěšné, ovladač vrátí SQL_NEED_DATA a vrátí řetězec výsledků procházení.
"*DATABASE:Database={master,model,pubs,tempdb};
*LANGUAGE:Language={us_english,Franais};"
Protože atributy v tomto řetězci jsou volitelné, aplikace je může vynechat. Aplikace však musí znovu volat SQLBrowseConnect . Pokud se aplikace rozhodne vynechat název a jazyk databáze, určuje prázdný řetězec žádosti o procházení. V tomto příkladu aplikace zvolí databázi pubs a zavolá naposledy SQLBrowseConnect, vynechá klíčové slovo LANGUAGE a hvězdičku před klíčovým slovem DATABASE:
SQLBrowseConnect(hdbc, "DATABASE=pubs;", SQL_NTS, BrowseResult,
sizeof(BrowseResult), &BrowseResultLen);
Vzhledem k tomu, že atribut DATABASE je posledním atributem připojení vyžadovaným ovladačem, proces procházení je dokončen, aplikace je připojena ke zdroji dat a SQLBrowseConnect vrátí SQL_SUCCESS. SQLBrowseConnect také vrátí úplný připojovací řetězec jako výsledný řetězec procházení:
"DSN=MySQLServer;SERVER=green;UID=Smith;PWD=Sesame;DATABASE=pubs;"
Konečný připojovací řetězec vrácený ovladačem neobsahuje uživatelsky přívětivé názvy za každým klíčovým slovem ani neobsahuje volitelná klíčová slova, která aplikace nezadá. Aplikace může tento řetězec s SQLDriverConnect použít k opětovnému připojení ke zdroji dat v aktuálním popisovači připojení (po odpojení) nebo k připojení ke zdroji dat na jiném popisovači připojení. Například:
SQLDriverConnect(hdbc, hwnd, BrowseResult, SQL_NTS, ConnStrOut,
sizeof(ConnStrOut), &ConnStrOutLen, SQL_DRIVER_NOPROMPT);