Megosztás:


PÉLDA az SQL Server böngészésére

Az alábbi példa bemutatja, hogyan használható az SQLBrowseConnect az SQL Server illesztőprogramjával elérhető kapcsolatok tallózására. Először az alkalmazás egy kapcsolati azonosítót kér:

SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);  

Ezután az alkalmazás meghívja az SQLBrowseConnectet , és megadja az SQL Server-illesztőprogramot az SQLDrivers által visszaadott illesztőprogram-leírás használatával:

SQLBrowseConnect(hdbc, "DRIVER={SQL Server};", SQL_NTS, BrowseResult,  
                  sizeof(BrowseResult), &BrowseResultLen);  

Mivel ez az SQLBrowseConnect első hívása, az Illesztőprogram-kezelő betölti az SQL Server-illesztőprogramot, és meghívja az illesztőprogram SQLBrowseConnect függvényét ugyanazokkal az argumentumokkal, mint amelyet az alkalmazástól kapott.

Megjegyzés:

Ha olyan adatforrás-szolgáltatóhoz csatlakozik, amely támogatja a Windows-hitelesítést, a felhasználói azonosító és a jelszó megadása helyett a kapcsolati sztringben kell megadnia Trusted_Connection=yes .

Az illesztőprogram megállapítja, hogy ez az SQLBrowseConnect első hívása , és visszaadja a kapcsolati attribútumok második szintjét: kiszolgáló, felhasználónév, jelszó, alkalmazásnév és munkaállomás-azonosító. A kiszolgálóattribútum esetében az érvényes kiszolgálónevek listáját adja vissza. Az SQLBrowseConnect visszatérési kódja SQL_NEED_DATA. Itt található a tallózás eredményének szövege:

"SERVER:Server={red,blue,green,yellow};UID:Login ID=?;PWD:Password=?;  
   *APP:AppName=?;*WSID:WorkStation ID=?;"  

A tallózási eredmény karakterláncban minden kulcsszót kettőspont követ, majd az egyenlőségjel előtt egy vagy több szó helyezkedik el. Ezek a szavak a felhasználóbarát név, amellyel egy alkalmazás létrehozhat egy párbeszédpanelt. Az APP és A WSID kulcsszavakat csillag előtaggal látják el, ami azt jelenti, hogy nem kötelezőek. A KISZOLGÁLÓ, a UID és a PWD kulcsszavak nincsenek csillaggal ellátva; a következő tallózási kérelem sztringjében meg kell adni az értékeket számukra. A KISZOLGÁLÓ kulcsszó értéke lehet az SQLBrowseConnect által visszaadott kiszolgálók egyike vagy egy felhasználó által megadott név.

Az alkalmazás ismét meghívja az SQLBrowseConnectet , megadva a zöld kiszolgálót, és kihagyja az APP és WSID kulcsszavakat, valamint a felhasználóbarát neveket az egyes kulcsszavak után:

SQLBrowseConnect(hdbc, "SERVER=green;UID=Smith;PWD=Sesame;", SQL_NTS,  
                  BrowseResult, sizeof(BrowseResult), &BrowseResultLen);  

Az illesztőprogram megpróbál csatlakozni a zöld kiszolgálóhoz. Ha vannak nem végzetes hibák, mint például egy hiányzó kulcsszó-érték pár, az SQLBrowseConnect az SQL_NEED_DATA-t adja vissza, és ugyanabban az állapotban marad, mint a hiba előtt volt. Az alkalmazás meghívhatja az SQLGetDiagFieldet vagy az SQLGetDiagRecet a hiba megállapításához. Ha a kapcsolat sikeres, az illesztőprogram az SQL_NEED_DATA értéket adja vissza és a tallózás eredményének sztringjét is visszaadja:

"*DATABASE:Database={master,model,pubs,tempdb};  
   *LANGUAGE:Language={us_english,Franais};"  

Mivel a sztring attribútumai nem kötelezőek, az alkalmazás kihagyhatja őket. Az alkalmazásnak azonban újra meg kell hívnia az SQLBrowseConnect-et . Ha az alkalmazás úgy dönt, hogy kihagyja az adatbázis nevét és nyelvét, egy üres tallózási kérési sztringet ad meg. Ebben a példában az alkalmazás kiválasztja a pubs adatbázist, és végső alkalommal meghívja az SQLBrowseConnectet , kihagyva a LANGUAGE kulcsszót és a csillagot a DATABASE kulcsszó előtt:

SQLBrowseConnect(hdbc, "DATABASE=pubs;", SQL_NTS, BrowseResult,  
                  sizeof(BrowseResult), &BrowseResultLen);  

Mivel a DATABASE attribútum az illesztőprogram által igényelt végső kapcsolati attribútum, a böngészési folyamat befejeződött, az alkalmazás csatlakozik az adatforráshoz, és az SQLBrowseConnect SQL_SUCCESS ad vissza. Az SQLBrowseConnect a teljes kapcsolati sztringet is visszaadja a tallózás eredménysztringjeként:

"DSN=MySQLServer;SERVER=green;UID=Smith;PWD=Sesame;DATABASE=pubs;"  

Az illesztőprogram által visszaadott végső kapcsolati sztring nem tartalmazza a felhasználóbarát neveket az egyes kulcsszavak után, és nem tartalmaz az alkalmazás által nem megadott választható kulcsszavakat sem. Az alkalmazás ezt a sztringet használhatja az SQLDriverConnect használatával az aktuális kapcsolati leíró adatforrásához való újracsatlakozáshoz (a kapcsolatleválasztás után), vagy egy másik kapcsolati leírón az adatforráshoz való csatlakozáshoz. Például:

SQLDriverConnect(hdbc, hwnd, BrowseResult, SQL_NTS, ConnStrOut,  
                  sizeof(ConnStrOut), &ConnStrOutLen, SQL_DRIVER_NOPROMPT);