Компонент TADOConnection

   
На этом шаге мы рассмотрим компонент TADOConnection.

   
Компонент TADOConnection используется для соединения с различными источниками ADO и
представляет собой версию объекта ADO Connection для Delphi.

   
Применение компонента TADOConnection дает разработчику ряд преимуществ:

  • все компоненты доступа к данным ADO обращаются к хранилищу данных через одно соединение;
  • возможность напрямую задать объект провайдера соединения;
  • строка подключения хранится в одном месте, вместо того чтобы храниться в нескольких
    разных компонентах;
  • выполнение транзакций;
  • возможность выполнять команды ADO;
  • расширенное управление соединением при помощи методов-обработчиков событий.

   
Компонент TADOConnection выполняет роль концентратора соединения с хранилищем данных.
Для установления связи нужно с помощью свойства ConnectionString сформировать связные параметры и затем
установить значение True в свойство Connected или вызвать метод Open. Для разрыва связи
выполняется метод Close компонента или в его свойство Connected устанавливается значение False.
До и после открытия и закрытия соединения разработчик может использовать соответствующие стандартные
методы-обработчики событий:

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

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

   procedure  TForm1.ADOConnection1WillConnect(Connection: TADOConnection; 
              var  ConnectionString, UserID, Password: WideString; 
              var ConnectOptions: TConnectOption; var EventStatus: TEventStatus);

   
Параметр Connection содержит указатель на вызвавший обработчик компонент.
Параметры ConnectionString, userID и Password определяют строку параметров,
имя и пароль пользователя.
Соединение может быть синхронным или асинхронным, что и определяется параметром ConnectOptions
типа TConnectOption:

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

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

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

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

   procedure  TForm1.ADOConnection1WillConnect(Connection: TADOConnection; 
              var  ConnectionString, UserID, Password: WideString; 
              var ConnectOptions: TConnectOption; var EventStatus: TEventStatus);
   begin 
      if EventStatus = esOK 
      then ConnectOptions := coConnectunspecified;  
   end;

   
В свойствах CommandCount и DataSetCount содержится количество соответствующих объектов,
которые обслуживаются данным компонентом. В сочетании со свойствами Commands и DataSets
можно получить доступ к любому интересующему объекту. Например, чтобы открыть соединение
с базой данных всех объектов, обслуживаемых компонентом ADOConnection1, нужно выполнить:

   var i : Integer;
   begin
   for i:=0 to (ADOConnection1.DataSetCount-1) do
       ADOConnection1.DataSets[i].Open;
   end;

   
С помощью методов GetProcedureNames и GetTableNames можно получить список всех
хранимых процедур и таблиц. Например:

   ADOConnection1.Open;
   ADOConnection1.GetTableNames(ListBox1.Items);

   
В результате имена всех таблиц базы данных поместятся в список ListBox1.

   
Важной особенностью компонента TADOConnection является возможность управления с его помощью
транзакциями. Для этого в состав компонента добавлены соответствующие методы и события.
С помощью метода BeginTrans стартует новая транзакция, методы CommitTrans и RollbackTrans
подтверждают или откатывают транзакцию. Разрешается произвольная глубина вложенности транзакций, то есть после
старта одной транзакции может немедленно стартовать следующая и т. д. Транзакция, стартующая с помощью
компонента TADOConnection, разделяется всеми другими связанными с ним компонентами. С помощью
свойства InTransaction программа может определить, завершилась ли ранее начатая транзакция.

   
Компонент TADOConnection может выполнять команды ADO без помощи других компонентов. Для
этого используется метод Execute:

   procedure Execute(const CommandText: WideString; var RecordsAffected: 
   Integer; ExecuteOptions: TExecuteOptions = [eoExecuteNoRecords]); 

или

   function Execute(const CommandText: WideString; const CommandType:
   TCommandType = cmdText; ExecuteOptions: TExecuteOptions = []): RecordSet; 

   
Выполнение команды осуществляется процедурой Execute если команда не возвращает набор записей
или одноименной функцией Execute если команда возвращает набор записей.

   
В таблице 1 перечислены свойства компонента TADOConnection.

   

Таблица 1.Свойства компонента TADOConnection

СвойствоОписание
property Attributes: TXactAttributes;Используется для установки транзакционных возможностей компонента,
для управления завершением и отменой транзакций.
property CommandTimeout: Integer;Указывает количество времени в секундах, после которого
команда будет отменена, по умолчанию 30 с. Значение 0 приводит к неограниченному ожиданию.
property Connected: Boolean;Указывает активность соединения: True означает соединение открыто,
False - закрыто.
property ConnectionString: WideString;Используется для указания подробной информации о соединениях с источником данных.
property ConnectionTimeout: Integer;Указывает количество времени в секундах, отведенное на установку соединения,
по умолчанию 15 с. Значение 0 приводит к неограниченному ожиданию.
property ConnectOptions: TConnectOption;Устанавливает тип соединения:

  • coConnectunspecified - синхронное соединение всегда ожидает результат последнего запроса;
  • coAsyncConnect - асинхронное соединение может выполнять новые запросы, не дожидаясь
    ответа от предыдущих запросов.
property CursorLocation: TCursorLocation;Указывает местоположение механизма управления курсором.

  • clUseClient - клиентский курсор. Позволяет выполнять любые операции с данными, в том числе не
    поддерживаемые сервером;
  • clUseServer - серверный курсор. Реализует только возможности сервера, но обеспечивает быструю
    обработку больших массивов данных.
property DefaultDatabase: String;Служит для указания базы данных, используемой по умолчанию.
property IsolationLevel: TIsolationLevel;Применяется для указания уровня изоляции транзакции.
Значение, заданное этим свойством, вступает в силу, как только будет инициирована транзакция вызовом
метода BeginTrans. Возможные значения:

  • ilUnspecified - уровень изоляции не указан (провайдер использует другой уровень);
  • ilChaos - изменения, сделанные транзакциями с большим уровнем изоляции, не могут быть
    изменены текущим соединением;
  • ilReadUncommitted (или ilBrowse) - изменения, сделанные незавершенными транзакциями
    (незафиксированные в БД), сразу же видны в других транзакциях;
  • ilCursorStability (или ilReadCommitted) - изменения, сделанные другими транзакциями,
    видны только после завершения (фиксации) этих транзакций;
  • ilRepeatableRead - изменения, сделанные другими транзакциями, не видны, но могут быть получены
    в новом запросе (при обновлении);
  • ilSerializable (или ilIsolated) - транзакции проводятся в полной изоляции от других транзакций.
property KeepConnection: Boolean;Определяет реакцию компонента на неиспользуемое соединение.
Если через соединение не подключен ни один активный компонент, свойство KeepConnection
в значении True сохраняет соединение открытым. Иначе, после закрытия последнего связанного
компонента ADO, соединение закрывается.
property LoginPromt: Boolean;Используется для указания того, нужно ли выводить диалоговое
окно, предназначенное для ввода идентификатора пользователя и пароля при соединении с
базой данных.
property Mode: TСonnectMode;Указывает допустимые для данного соединения разрешения на модификацию данных:

  • cmUnknown - разрешения еще не установлены или не определены;
  • cmRead - для соединения установлено разрешение "только чтение";
  • cmWrite - установлено разрешение "только запись";
  • cmReadWrite - для соединения установлено разрешение "запись/чтение";
  • cmShareDenyRead - разрешение на чтение для других соединений запрещено;
  • cmShareDenyWrite - разрешение на запись для других соединений запрещено;
  • cmShareExclusive - разрешение на открытие для других соединений запрещено;
  • cmShareDenyNone - открытие других соединений с разрешениями запрещено.

   
На следующем шаге мы рассмотрим компонент TADOCommand.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий