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