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


Запрос у пользователя сведений о подключении

Если приложение использует SQLConnect и должно запрашивать пользователю любую информацию о подключении, например имя пользователя и пароль, это необходимо сделать самостоятельно. Хотя это позволяет приложению управлять своим "внешним видом и чувством", оно может заставить приложение содержать код для конкретного драйвера. Это происходит, когда приложению требуется запрашивать пользователю сведения о подключении для конкретного драйвера. Это представляет собой невозможное положение для универсальных приложений, которые предназначены для работы с любыми и всеми драйверами, включая драйверы, которые не существуют при написании приложения.

SQLDriverConnect может запрашивать у пользователя сведения о подключении. Например, пользовательская программа, упоминаемая ранее, может передать следующую строку подключения в SQLDriverConnect:

DSN=XYZ Corp;  

Затем драйвер может отобразить диалоговое окно, которое запрашивает идентификаторы пользователей и пароли, как показано на следующем рисунке.

Диалоговое окно с запросом идентификаторов пользователей и паролей

То, что драйвер может запрашивать информацию о подключении, особенно полезно для универсальных и вертикальных приложений. Эти приложения не должны содержать сведения, относящиеся к драйверу, и запрос драйвера на наличие необходимых сведений сохраняет эти сведения вне приложения. Это показано в предыдущих двух примерах. Когда приложение передает только имя источника данных драйверу, приложение не содержит никаких сведений о драйвере и поэтому не привязано к конкретному драйверу. Когда приложение передало полную строку подключения драйверу, оно было привязано к драйверу, который может интерпретировать такую строку.

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

Диалоговое окно

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

Условия, при которых драйвер запрашивает у пользователя, управляются флагом DriverCompletion, есть варианты всегда запрашивать, запрашивать при необходимости или никогда не запрашивать. Полное описание этого флага см. в описании функции SQLDriverConnect .