Programming: Delphi
Иллюстрированный самоучитель по Delphi 7 для профессионалов
Управление соединением
Соединение с хранилищем данных ADO открывается и закрывается при помощи свойства
или методов
procedure Open; overload;
procedure Openfconst UserlD: WideString; const Password: WideString); overload;
и
Метод 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;
Кстати, параметр синхронности/асинхронности можно также задать при помощи свойства
После открытия соединения для выполнения собственного кода можно использовать метод-обработчик
TConnectErrorEvent = procedure(Connection:
TADOConnection; Error: Error;
var Eventstatus: TEventStatus) of object;
property OnConnectComplete: TConnectErrorEvent;
Здесь, если в процессе открытия соединения возникла ошибка, параметр
Eventstatus будет равен esErrorsOccured, а параметр
Error содержит объект ошибки ADO.
Теперь перейдем к вспомогательным свойствам и методам компонента
TADOConnection, обеспечивающим соединение.
Для ограничения времени открытия соединения для медленных каналов связи используется свойство
задающее время ожидания открытия соединения в секундах. По умолчанию оно равно 15 сек.
Также можно определить реакцию компонента на неиспользуемое соединение. Если через соединение не подключен ни один активный компонент, свойство
в значении True сохраняет соединение открытым. Иначе, после закрытия последнего связанного компонента ADO, соединение закрывается.
При необходимости провайдер соединения ADO определяется напрямую свойством
Имя источника данных по умолчанию задается свойством
Но если этот же параметр указан в строке соединения, то он перекрывает собой значение свойства.
При необходимости прямой доступ к объекту соединения OLE DB обеспечивает свойство
При открытии соединения необходимо вводить имя пользователя и его пароль. Появление стандартного диалога управляется свойством
Без этого диалога для задания данных параметров можно использовать свойство
Connectionstring, метод open
или метод-обработчик
type TLoginEvent = procedure(Sender:TObject;
Username, Password: string)
of object;
property OnLogin: TLoginEvent;
Свойство
type TConnectMode = (cmUnknown, cmRead, cmWrite, cinReadWrite, cmShareDenyRead, cmShareDenyWrite, cmShareExclusive,
cmShareDenyNone);
property Mode: TConnectMode;
задает доступные для соединения операции:
- cmUnknown
— разрешение неизвестно или не может быть установлено;
- cmRead
— разрешение на чтение;
- cmwrite
— разрешение на запись;
- cmReadWrite
— разрешение на чтение и запись;
- cmshareDenyRead
— разрешение на чтение для других соединений запрещено;
- cmshareoenywrite
— разрешение на запись для других соединений запрещено;
- cmShareExciusive
— разрешение на открытие для других соединений запрещено;
- cmshareDenyNone
— открытие других соединений с разрешениями запрещено.
Назад | Оглавление | Вперёд
При перепечатке любого материала
с сайта, видимая ссылка на источник www.warayg.narod.ru
и все имена, ссылки авторов обязательны.
© 2005
|