SQL Server 찾아보기 예제

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

SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);  

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

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

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

참고 항목

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

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

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

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

애플리케이션은 SQLBrowse커넥트 다시 호출하여 녹색 서버를 지정하고 각 키워드(keyword) 후 APPWSID 키워드(keyword) 및 사용자에게 친숙한 이름을 생략 합니다.

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

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

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

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

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

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

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

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

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