Разработка приложений баз данных для InterBase в Delphi с помощью ADO.

Технология Microsoft ActiveX Data Objects обеспечивает универсальный доступ к источникам данных из приложений БД. Такую возможность предоставляют функции набора интерфейсов, созданные на основе общей модели объектов СОМ и описанные в спецификации OLE DB.

Технология ADO и интерфейсы OLE DB обеспечивают для приложений единый способ доступа к источникам данных различных типов (рис. 19.1). Например, приложение, использующее ADO, может применять одинаково сложные операции и к данным, хранящимся на корпоративном сервере SQL, и к электронным таблицам, и локальным СУБД. Запрос SQL, направленный любому источнику данных через ADO, будет выполнен.

Разработка приложений баз данных для InterBase в Delphi с помощью ADO. - student2.ru

Рис. 19.1.Схема доступа к данным через ADO

Возникает вопрос: каким образом источники данных смогут выполнить этот запрос?

За серверы БД беспокоиться не стоит, обработка запросов SQL — это их основная обязанность. Но как быть с файловыми последовательностями, электронными таблицами, файлами электронной почты и т. д.? Здесь на помощь приходят механизмы ADO и интерфейсы OLE DB.

OLE DB представляет собой набор специализированных объектов СОМ, инкапсулирующих стандартные функции обработки данных, и специализированные функции конкретных источников данных и интерфейсов, обеспечивающих передачу данных между объектами.

Согласно терминологии ADO, любой источник данных (база данных, электронная таблица, файл) называется хранилищем данных, с которым при помощи провайдера данных взаимодействует приложение. Минимальный набор компонентов приложения может включать объект соединения, объект набора данных, объект процессора запросов.

Примечание

Объекты OLE DB создаются и функционируют так же, как и другие объекты СОМ. Каждому объекту соответствует идентификатор класса CLSID, хранящийся в системном реестре. Для создания объекта используется метод CoCreateinstance и соответствующая фабрика класса. Объекту соответствует набор интерфейсов, к методам которых можно обращаться после создания объекта.

В результате приложение обращается не прямо к источнику данных, а к объекту OLE DB, который "умеет" представить данные (например, из файла электронной почты) в виде таблицы БД или результата выполнения запроса SQL.

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

Такая архитектура позволяет сделать набор объектов и интерфейсов открытым и расширяемым. Набор объектов и соответствующий провайдер может быть создан для любого хранилища данных без внесения изменений в исходную структуру ADO. При этом существенно расширяется само понятие данных — ведь можно разработать набор объектов и интерфейсов и для нетрадиционных табличных данных. Например, это могут быть графические данные геоинформационных систем, древовидные структуры из системных реестров, данные CASE-инструментов и т. д.

Так как технология ADO основана на стандартных интерфейсах СОМ, которые являются системным механизмом Windows, это сокращает общий объем работающего программного кода и позволяет распространять приложения БД без вспомогательных программ и библиотек.

Примечание

Нижеследующее описание спецификации OLE DB представлено в соответствии с официальной терминологией Microsoft для данной предметной области.

Спецификация OLE DB различает следующие типы объектов, которые будут рассмотрены ниже.

  • Перечислитель (Enumerator) выполняет поиск источников данных или других перечислителей. Используется для обеспечения функционирования провайдеров ADO.
  • Объект-источник данных (Data Source Object) представляет хранилище данных.
  • Сессия (Session) объединяет совокупность объектов, обращающихся к одному хранилищу данных.
  • Транзакция (Trasaction) инкапсулирует механизм выполнения транзакции.
  • Команда (Command) содержит текст команды и обеспечивает ее выполнение. Командой может быть запрос SQL, обращение к таблице БД и т. д.
  • Набор рядов (Rowset) представляет собой совокупность строк данных, являющихся результатом выполнения команды ADO.
  • Объект-ошибка (Error) содержит информацию об исключительной ситуации.

Рассмотрим функциональные возможности основных объектов и интерфейсов OLE DB.

В соответствии с терминологией ADO, любой источник данных (базу данных, файл, электронную таблицу) называют хранилищем данных. Приложение взаимодействует с хранилищем данных с помощью провайдера. Для каждого типа хранилища данных используется свой провайдер ADO. Провайдер обеспечивает обращение к данным хранилища с запросами, интерпретацию возвращаемой служебной информации и результатов выполнения запросов для передачи их приложению.

Все объекты и интерфейсы ADO являются объектами и интерфейсами СОМ. Согласно спецификации OLE DB, в состав СОМ входит следующий набор объектов:

  • Command (команда) — служит для обработки команд (обычно SQL -запросов);
  • Data Source (источник данных) — используется для связи с провайдером данных;
  • Enumerator (перечислитель) — служит для перечисления провайдеров ADO;
  • Error (ошибка) — содержит информацию об исключениях;
  • Rowset (набор рядов) — строки данных, являющиеся результатом выполнения команды;
  • Session (сессия) - совокупность объектов, обращающихся к одному хранилищу данных;
  • Transaction (транзакция) — управление транзакциями в OLE DB.

Мы привели состав объектов СОМ, чтобы получить общую картину о технологии ADO. В Delphi некоторые из этих объектов получили реализацию.

В системе программирования Delphi компоненты, используемые для создания приложений по технологии ADO, расположены на странице ADO палитры компонентов. Охарактеризуем кратко назначение этих компонентов:

  • ADOConnection — ADO-соединение, используется для установки соединения с ADO-источником данных и обеспечивает поддержку транзакций;
  • ADOCommand — ADO-команды, используется для выполнения SQL-команд доступа к ADO-источнику данных без возвращения результирующего набора данных;
  • ADODataSet — набор данных ADO, обеспечивает доступ к одной или более таблице ADO-источника данных и позволяет другим компонентам управлять этими данными, связываясь с компонентом АDОТаblе через компонент DataSource аналогично тому как используется компонент DataSet. Может использоваться в компонентах ADOTable, ADOQuery, ADOStoredProc;
  • АDОТаblе - таблица ADO, обеспечивает доступ к одной таблице ADO-источника данных и позволяет другим компонентам управлять этими данными, связываясь с компонентом ADOTable через компонент DataSource;
  • ADOQuery — запрос ADO, позволяет выполнять SQL-команды для получения информации из ADO-источника данных и позволяет другим компонентам управлять этими данными, связываясь с компонентом ADOTable через компонент DataSource;
  • ADOStoredProc — хранимая процедура ADO, позволяет приложениям получать доступ к хранимым процедурам, используя интерфейс ADO;
  • RDSConnection — RDS-соединение, служит для управления передачей объекта Recordset от одного процесса (компьютера) к другому. Компонент используется для создания серверных приложений.

Компонент ADOConnection может использоваться как посредник между данными и другими компонентами ADO, что позволяет более гибко управлять соединением.

Возможен вариант использования других компонентов ADO, соединяясь с источником данных напрямую, для чего компоненты ADO имеют свойство ConnectionString, с помощью которого могут создавать свой собственный канал доступа к данным.

Наши рекомендации