다음 예제에서는 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=?;"
찾아보기 결과 문자열의 각 키워드 뒤에는 콜론과 등호 앞에 하나 이상의 단어가 잇습니다. 이러한 단어는 애플리케이션이 대화 상자를 빌드하는 데 사용할 수 있는 사용자 친화적인 이름입니다. APP 및 WSID 키워드는 별표로 접두사로 지정됩니다. 즉, 선택 사항입니다. SERVER, UID 및 PWD 키워드는 별표로 접두사를 지정하지 않습니다. 다음 찾아보기 요청 문자열에서 값을 제공해야 합니다. SERVER 키워드의 값은 SQLBrowseConnect에서 반환된 서버 또는 사용자가 제공한 이름 중 하나일 수 있습니다.
애플리케이션은 SQLBrowseConnect를 다시 호출하여 녹색 서버를 지정하고 각 키워드 뒤의 APP 및 WSID 키워드와 사용자 친화적인 이름을 생략합니다.
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);