Компонент 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 и: Integer;

begin

for и:=0 to (ADOConnection1.DataSetCount - 1) do

ADOConnection1.DataSets[и].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 - открытие других соединений с разрешениями запрещено.
     







Дата добавления: 2016-02-27; просмотров: 2811;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.01 сек.