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


Соединение с источником данных (ODBC)

После определения среды и дескрипторов соединения, а также установки любых атрибутов соединения приложение устанавливает соединение с источником данных или драйвером. Существует три функции, которые можно использовать для установки соединения:

  • SQLConnect

  • SQLDriverConnect

  • SQLBrowseConnect

Дополнительные сведения о том, как установить соединение с источником данных, включая различные доступные параметры строки соединения, см. в разделе Использование ключевых слов строки подключения с собственным клиентом SQL Server.

SQLConnect

Функция SQLConnect является простейшей функцией соединения. Она принимает три параметра: имя источника данных, идентификатор пользователя и пароль. Функция SQLConnect используется, если эти три параметра содержат всю информацию, которая необходима для соединения с базой данных. Для установки соединения с базой данных создайте список источников данных при помощи функции SQLDataSources, укажите пользователя для источника данных, идентификатор пользователя и пароль, а затем вызовите функцию SQLConnect.

Функция SQLConnect предполагает, что указание имени источника данных, идентификатора пользователя и пароля достаточно для соединения с источником данных и что источник данных ODBC содержит все другие необходимые сведения, которые необходимы драйверу ODBC для создания соединения. В отличие от функций SQLDriverConnect и SQLBrowseConnect функция SQLConnect не использует строку соединения.

SQLDriverConnect

Функция SQLDriverConnect используется, когда кроме указания имени источника данных, идентификатора пользователя и пароля требуются и другие сведения. Одним из параметров функции SQLDriverConnect является строка соединения, содержащая специфическую для драйвера информацию. Можно использовать функцию SQLDriverConnect вместо SQLConnect для следующих целей:

  • для указания специфической для драйвера информации во время подключения;

  • для запроса, который драйвер направляет пользователю для получения информации о соединении;

  • для соединения без использования источника данных ODBC.

Строка соединения функции SQLDriverConnect содержит ряд пар типа «ключевое слово — значение», в котором указана вся информация о соединении, поддерживаемая драйвером ODBC. Каждый драйвер поддерживает стандартные ключевые слова ODBC (DSN, FILEDSN, DRIVER, UID, PWD и SAVEFILE) в дополнение к специальным ключевым словам драйвера для указания всей информации о соединении, поддерживаемой драйвером. Функцию SQLDriverConnect можно использовать для соединения без источника данных. Например, приложение, созданное для соединения типа «без DSN» с экземпляром SQL Server, может вызвать функцию SQLDriverConnect со строкой соединения, содержащей идентификатор входа, пароль, сетевую библиотеку, имя сервера, с которым необходимо создать соединение, и используемую базу данных по умолчанию.

При использовании функции SQLDriverConnect существуют два параметра для подсказки пользователю необходимой для соединения информации:

  • Диалоговое окно приложения

    Можно создать диалоговое окно приложения, которое запросит информацию о соединении, а затем вызовет функцию SQLDriverConnect с дескриптором окна, равным NULL, и значением параметра DriverCompletion, равным SQL_DRIVER_NOPROMPT. Эти параметры предотвращают открытие драйвером ODBC собственного диалогового окна. Этот метод используется, когда важно управлять пользовательским интерфейсом приложения.

  • Диалоговое окно драйвера

    Можно настроить приложение на передачу допустимого дескриптора окна в функцию SQLDriverConnect и установку для параметра DriverCompletion значения SQL_DRIVER_COMPLETE, SQL_DRIVER_PROMPT или SQL_DRIVER_COMPLETE_REQUIRED. Затем драйвер формирует диалоговое окно для получения от пользователя информации о соединении. Этот метод упрощает код приложения.

SQLBrowseConnect

Функция SQLBrowseConnect, как и функция SQLDriverConnect, использует строку соединения. Однако при помощи функции SQLBrowseConnect приложение может создать полную строку соединения, которая взаимодействует с источником данных во время выполнения. Это позволяет приложению:

  • строить собственные диалоговые окна для запроса этой информации, сохраняя таким образом управление своим пользовательским интерфейсом;

  • просматривать систему в поисках источников данных, которые может использовать конкретный драйвер, возможно, за несколько шагов.

    Например, пользователь может сначала просмотреть серверы в сети, а после выбора сервера с помощью драйвера просмотреть доступные базы данных этого сервера.

После завершения удачного соединения функция SQLBrowseConnect возвращает строку соединения, которую можно использовать при последующих вызовах функции SQLDriverConnect.

Драйвер ODBC для собственного клиента SQL Server всегда возвращает значение SQL_SUCCESS_WITH_INFO на удачный вызов функции SQLConnect, SQLDriverConnect или SQLBrowseConnect. Когда приложение ODBC вызывает функцию SQLGetDiagRec после получения SQL_SUCCESS_WITH_INFO, могут быть получены следующие сообщения.

  • 5701
    Показывает, что SQL Server помещает пользовательский контекст в базу данных по умолчанию, которая определена в источнике данных, или в базу данных, определенную для идентификатора входа, который использовался в соединении, если источник данных не имеет базы данных по умолчанию.

  • 5703
    Обозначает язык, используемый на сервере.

В следующих примерах показано сообщение, которое возвращается системным администратором при успешном соединении:

szSqlState = "01000", *pfNativeError = 5701,
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]
       Changed database context to 'pubs'."
szSqlState = "01000", *pfNativeError = 5703,
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]
       Changed language setting to 'us_english'."

Можно не обрабатывать сообщения 5701 и 5703; они всего лишь информационные. Однако не следует пропускать код возврата SQL_SUCCESS_WITH_INFO, так как сообщения, отличные от 5701 и 5703, могут быть возвращены. Например, если драйвер соединяется с сервером, на котором запущен экземпляр SQL Server с устаревшим каталогом хранимых процедур, одной из ошибок, возвращаемых функцией SQLGetDiagRec после SQL_SUCCESS_WITH_INFO, является:

SqlState:   01000
pfNative:   0
szErrorMsg: "[Microsoft][SQL Server Native Client]The ODBC
            catalog stored procedures installed on server
            my65server are version 06.50.0193; version 07.00.0205
            or later is required to ensure proper operation.
            Please contact your system administrator."

Функция обработки ошибок приложения для соединений SQL Server должна вызывать функцию SQLGetDiagRec до тех пор, пока она не вернет SQL_NO_DATA. Затем она должна реагировать на любые сообщения, отличные от сообщений с кодом pfNative, равным 5701 или 5703.

См. также

Основные понятия

Взаимодействие с SQL Server (ODBC)