На этом шаге мы рассмотрим компонент TADOConnection.
Компонент TADOConnection используется для соединения с различными источниками ADO и представляет собой версию объекта ADO Connection для Delphi.
Применение компонента TADOConnection дает разработчику ряд преимуществ:
Компонент TADOConnection выполняет роль концентратора соединения с хранилищем данных. Для установления связи нужно с помощью свойства ConnectionString сформировать связные параметры и затем установить значение True в свойство Connected или вызвать метод Open. Для разрыва связи выполняется метод Close компонента или в его свойство Connected устанавливается значение False. До и после открытия и закрытия соединения разработчик может использовать соответствующие стандартные методы-обработчики событий:
Кроме этого, компонент 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:
Наконец, параметр EventStatus позволяет определить успешность выполнения посланного запроса на соединение:
Например, в случае успешного соединения можно выбрать синхронный режим работы компонента:
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.
Свойство | Описание |
---|---|
Используется для установки транзакционных возможностей компонента, для управления завершением и отменой транзакций. | |
Указывает количество времени в секундах, после которого команда будет отменена, по умолчанию 30 с. Значение 0 приводит к неограниченному ожиданию. | |
Указывает активность соединения: True означает соединение открыто, False - закрыто. | |
Используется для указания подробной информации о соединениях с источником данных. | |
Указывает количество времени в секундах, отведенное на установку соединения, по умолчанию 15 с. Значение 0 приводит к неограниченному ожиданию. | |
Устанавливает тип соединения:
|
|
Указывает местоположение механизма управления курсором.
| |
Служит для указания базы данных, используемой по умолчанию. | |
Применяется для указания уровня изоляции транзакции.
Значение, заданное этим свойством, вступает в силу, как только будет инициирована транзакция вызовом
метода BeginTrans. Возможные значения:
|
|
Определяет реакцию компонента на неиспользуемое соединение. Если через соединение не подключен ни один активный компонент, свойство KeepConnection в значении True сохраняет соединение открытым. Иначе, после закрытия последнего связанного компонента ADO, соединение закрывается. | |
Используется для указания того, нужно ли выводить диалоговое окно, предназначенное для ввода идентификатора пользователя и пароля при соединении с базой данных. | |
Указывает допустимые для данного соединения разрешения на модификацию данных:
|
На следующем шаге мы рассмотрим компонент TADOCommand.