Programming: Delphi


Иллюстрированный самоучитель по 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;

После открытия соединения для выполнения собственного кода можно использовать метод-обработчик

    TConnectErrorEvent = procedure(Connection:

      TADOConnection; Error: Error;

     var Eventstatus: TEventStatus) of object; 

    property OnConnectComplete: TConnectErrorEvent;

Здесь, если в процессе открытия соединения возникла ошибка, параметр Eventstatus будет равен esErrorsOccured, а параметр Error содержит объект ошибки ADO.

Теперь перейдем к вспомогательным свойствам и методам компонента TADOConnection, обеспечивающим соединение.

Для ограничения времени открытия соединения для медленных каналов связи используется свойство

    property ConnectionTimeout: Integer;

задающее время ожидания открытия соединения в секундах. По умолчанию оно равно 15 сек.

Также можно определить реакцию компонента на неиспользуемое соединение. Если через соединение не подключен ни один активный компонент, свойство

    property KeepConnection: Boolean;

в значении True сохраняет соединение открытым. Иначе, после закрытия последнего связанного компонента ADO, соединение закрывается.

При необходимости провайдер соединения ADO определяется напрямую свойством

    property Provider: WideString;

Имя источника данных по умолчанию задается свойством

    property DefaultDatabase: WideString;

Но если этот же параметр указан в строке соединения, то он перекрывает собой значение свойства.

При необходимости прямой доступ к объекту соединения OLE DB обеспечивает свойство

    property ConnectionObject: _Connection;

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

    property LoginPrompt: Boolean;

Без этого диалога для задания данных параметров можно использовать свойство 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
 

Hosted by uCoz