다음을 통해 공유


SQL Server 브라우징 예제

다음 예제에서는 SQLBrowseConnect 를 사용하여 드라이버에서 SQL Server에 사용할 수 있는 연결을 찾아보는 방법을 보여 줍니다. 먼저 애플리케이션은 연결 핸들을 요청합니다.

SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);  

다음으로 애플리케이션은 SQLBrowseConnect를 호출하고 SQLDrivers에서 반환된 드라이버 설명을 사용하여 SQL Server 드라이버를 지정합니다.

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

이는 SQLBrowseConnect에 대한 첫 번째 호출이므로 드라이버 관리자는 SQL Server 드라이버를 로드하고 애플리케이션에서 받은 것과 동일한 인수를 사용하여 드라이버의 SQLBrowseConnect 함수를 호출합니다.

비고

Windows 인증을 지원하는 데이터 원본 공급자에 연결하는 경우 연결 문자열에 사용자 ID 및 암호 정보 대신 지정 Trusted_Connection=yes 해야 합니다.

드라이버는 이것이 SQLBrowseConnect 에 대한 첫 번째 호출임을 확인하고 서버, 사용자 이름, 암호, 애플리케이션 이름 및 워크스테이션 ID의 두 번째 연결 특성을 반환합니다. 서버 특성의 경우 유효한 서버 이름 목록을 반환합니다. SQLBrowseConnect의 반환 코드는 SQL_NEED_DATA. 찾아보기 결과 문자열은 다음과 같습니다.

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

찾아보기 결과 문자열의 각 키워드 뒤에는 콜론과 등호 앞에 하나 이상의 단어가 잇습니다. 이러한 단어는 애플리케이션이 대화 상자를 빌드하는 데 사용할 수 있는 사용자 친화적인 이름입니다. APPWSID 키워드는 별표로 접두사로 지정됩니다. 즉, 선택 사항입니다. SERVER, UIDPWD 키워드는 별표로 접두사를 지정하지 않습니다. 다음 찾아보기 요청 문자열에서 값을 제공해야 합니다. SERVER 키워드의 값은 SQLBrowseConnect에서 반환된 서버 또는 사용자가 제공한 이름 중 하나일 수 있습니다.

애플리케이션은 SQLBrowseConnect를 다시 호출하여 녹색 서버를 지정하고 각 키워드 뒤의 APPWSID 키워드와 사용자 친화적인 이름을 생략합니다.

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

드라이버가 녹색 서버에 연결을 시도합니다. 누락된 키워드-값 쌍과 같은 심각하지 않은 오류가 있는 경우 SQLBrowseConnect 는 SQL_NEED_DATA 반환하고 오류 이전과 동일한 상태로 유지됩니다. 애플리케이션은 SQLGetDiagField 또는 SQLGetDiagRec 를 호출하여 오류를 확인할 수 있습니다. 연결에 성공하면 드라이버는 SQL_NEED_DATA 반환하고 찾아보기 결과 문자열을 반환합니다.

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

이 문자열의 특성은 선택 사항이므로 애플리케이션에서 생략할 수 있습니다. 그러나 애플리케이션은 SQLBrowseConnect를 다시 호출해야 합니다. 애플리케이션이 데이터베이스 이름 및 언어를 생략하도록 선택하는 경우 빈 찾아보기 요청 문자열을 지정합니다. 이 예제에서 애플리케이션은 pubs 데이터베이스를 선택하고 SQLBrowseConnect를 마지막으로 호출하여 DATABASE 키워드 앞에 LANGUAGE 키워드와 별표가 생략됩니다.

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

DATABASE 특성은 드라이버에 필요한 최종 연결 특성이므로 검색 프로세스가 완료되고 애플리케이션이 데이터 원본에 연결되고 SQLBrowseConnect가 SQL_SUCCESS 반환합니다. 또한 SQLBrowseConnect 는 전체 연결 문자열을 찾아보기 결과 문자열로 반환합니다.

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

드라이버에서 반환된 최종 연결 문자열은 각 키워드 다음에 사용자 친화적인 이름을 포함하지 않으며 애플리케이션에서 지정하지 않은 선택적 키워드도 포함하지 않습니다. 애플리케이션은 SQLDriverConnect 와 함께 이 문자열을 사용하여 연결이 끊긴 후 현재 연결 핸들의 데이터 원본에 다시 연결하거나 다른 연결 핸들의 데이터 원본에 연결할 수 있습니다. 다음은 그 예입니다.

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