Пример просмотра 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);