Поделиться через


Пример просмотра SQL Server

В следующем примере показано, как SQLBrowse Подключение можно использовать для просмотра подключений, доступных с драйвером SQL Server. Во-первых, приложение запрашивает дескриптор подключения:

SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);  

Затем приложение вызывает SQLBrowse Подключение и задает драйвер SQL Server, используя описание драйвера, возвращаемое SQLDrivers:

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

Так как это первый вызов SQLBrowse Подключение, диспетчер драйверов загружает драйвер SQL Server и вызывает функцию SQLBrowse драйвера Подключение с теми же аргументами, которые он получил от приложения.

Примечание.

Если вы подключаетесь к поставщику источников данных, который поддерживает проверка подлинности Windows, следует указать Trusted_Connection=yes вместо идентификатора пользователя и пароля в строка подключения.

Драйвер определяет, что это первый вызов SQLBrowse Подключение и возвращает второй уровень атрибутов подключения: сервер, имя пользователя, пароль, имя приложения и идентификатор рабочей станции. Для атрибута сервера возвращается список допустимых имен серверов. Код возврата из SQLBrowse Подключение 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 может быть одним из серверов, возвращаемых SQLBrowse Подключение или именем, предоставленным пользователем.

Приложение снова вызывает SQLBrowse Подключение укажите зеленый сервер и опустите ключевое слово APP и WSID и понятные имена после каждого ключевое слово:

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

Драйвер пытается подключиться к зеленому серверу. Если возникают нефатальные ошибки, такие как отсутствует пара ключевое слово-значение, SQLBrowse Подключение возвращает SQL_NEED_DATA и остается в том же состоянии, что и до ошибки. Приложение может вызвать SQLGetDiagField или SQLGetDiagRec , чтобы определить ошибку. Если подключение выполнено успешно, драйвер возвращает SQL_NEED_DATA и возвращает строку результата обзора:

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

Поскольку атрибуты в этой строке являются необязательными, приложение может опустить их. Однако приложение должно снова вызвать SQLBrowse Подключение. Если приложение выбирает опущение имени базы данных и языка, оно указывает пустую строку запроса обзора. В этом примере приложение выбирает базу данных pubs и вызывает SQLBrowse Подключение последнее время, пропуская язык ключевое слово и звездочку перед базой данных ключевое слово:

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;"  

Окончательный строка подключения, возвращаемый драйвером, не содержит понятных для пользователя имен после каждого ключевое слово, а также не содержит необязательные ключевое слово, не указанные приложением. Приложение может использовать эту строку с SQLDriver Подключение для повторного подключения к источнику данных в текущем дескрипторе подключения (после отключения) или для подключения к источнику данных на другом дескрипторе подключения. Например:

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