Управление соединением
Соединение с хранилищем данных 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;