Иллюстрированный самоучитель по Delphi 7 для профессионалов

Управление соединением

Соединение с хранилищем данных ADO открывается и закрывается при помощи свойства:

property Connected: Boolean;

…или методов:

procedure Open; overload;
procedure Openfconst UserlD: WideString; const Password: WideString); overload;

…и:

procedure Close;

Метод open является перегружаемым при необходимости использования удаленного или локального соединения. Для удаленного соединения применяется вариант с параметрами UserID и Password.

До и после открытия и закрытия соединения разработчик может использовать соответствующие стандартные методы-обработчики событий:

property BeforeConnect: TNotifyEvent;
property BeforeDisconnect: TNotifyEvent;
property AfterConnect: TNotifyEvent;
property AfterDisconnect: TNotifyEvent;

Кроме этого, компонент TADOConnection имеет дополнительные методы-обработчики. После получения подтверждения от провайдера о том, что соединение будет открыто, перед его реальным открытием вызывается метод:

TWillConnectEvent = procedure
(Connection: TADOConnection; var Connectionstring, UserlD, Password: WideString;
var ConnectOptions: TConnectOption;
var EventStatus: TEventStatus) of object;
property OnWillConnect: TWillConnectEvent;

Параметр Connection содержит указатель на вызвавший обработчик компонент.

Параметры Connectionstring, userID и Password определяют строку параметров, имя и пароль пользователя.

Соединение может быть синхронным или асинхронным, что и определяется параметром ConnectOptions типа TConnectOption:

type TConnectOption = (coConnectUnspecified, coAsyncConnect);

Где:

  • coConnectunspecified – синхронное соединение всегда ожидает результат последнего запроса;
  • coAsyncConnect – асинхронное соединение может выполнять новые запросы, не дожидаясь ответа от предыдущих запросов.

Наконец, параметр Eventstatus позволяет определить успешность выполнения посланного запроса на соединение:

type
TEventStatus = (esOK, esErrorsOccured, esCantDeny, esCancel, esUnwantedEvent);

Где:

  • esOK – запрос на соединение выполнен успешно;
  • esErrorsOccured – в процессе выполнения запроса возникла ошибка;
  • esCantDeny – соединение не может быть прервано;
  • esCancel – соединение было прервано до открытия;
  • esUnwantedEvent – внутренний флаг ADO.

Например, в случае успешного соединения можно выбрать синхронный режим работы компонента:

procedure TForml.ADOConnectionWillConnect(Connection: TADOConnection;
var ConnectionString, UserlD, Password: WideString;
var ConnectOptions: TConnectOption;
var Eventstatus: TEventStatus);
begin if Eventstatus = esOK
then ConnectOptions: = coConnectunspecified;
end;

Кстати, параметр синхронности/асинхронности можно также задать при помощи свойства:

ConnectOptions property ConnectOptions: TConnectOption;
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.