Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
часть2.doc
Скачиваний:
17
Добавлен:
24.08.2019
Размер:
892.42 Кб
Скачать

Использование ado средствами Delphi

Наряду с традиционными инструментами доступа к данным Borland Data­base Engine и ODBC в приложениях Delphi можно применять технологию Microsoft ActiveX Data Objects (ADO), которая основана на возможностях СОМ, а именно интерфейсов OLE DB.

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

В Палитре компонентов Delphi есть страница ADO, содержащая набор ком­понентов, позволяющих создавать полноценные приложения БД, обра­щающиеся к данным через ADO.

Основы ADO

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

Перечислитель (Enumerator) выполняет поиск источников данных или других перечислителей. Используется для обеспечения функционирова­ния провайдеров ADO.

Объект-источник данных (Data Source Object) представляет хранилище данных.

Сессия (Session) объединяет совокупность объектов, обращающихся к од­ному хранилищу данных.

Транзакция (Trasaction) инкапсулирует механизм выполнения транзакции.

D Команда (Command) содержит текст команды и обеспечивает ее вы­полнение. Командой может быть запрос SQL, обращение к таблице БД и т. д.

  • Набор рядов (Rowset) представляет собой совокупность строк данных, являющихся результатом выполнения команды ADO.

  • Объект-ошибка (Error) содержит информацию об исключительной си­туации.

Механизмы доступа к данным через ADO реализованы в Delphi в виде набора компонентов, расположенных на странице ADO.

Технология dbExpress

Одной из проблем различных технологий доступа к данным, используемым в приложениях Delphi, является трудность распространения готовых прило­жений. Для BDE требуется отдельная установка, которая занимает порядка 15 Мбайт дискового пространства, а также специальная настройка псевдо­нимов. ADO предустановлена в операционной системе, но нуж­дается в настраиваемых провайдерах данных. При необходимо­сти обновить версию ADO, дистрибутив вашего приложения "потяжелеет" более чем на 2 Мбайт.

Новая технология доступа к данным dbExpress обеспечивает взаимодействие приложения с серверами баз данных. Драйверы dbExpress используют для получения данных исключительно запросы SQL. При этом на клиентской стороне отсутствует кэширование данных, вследствие этого здесь применя­ются исключительно однонаправленные курсоры и отсутствует возможность прямого редактирования наборов данных.

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

Для функционирования компонентов dbExpress необходим только один драйвер, который взаимодействует напрямую с клиентским программным обеспечением для выбранного сервера БД. В поставку входят драйверы для первых четырех из списка серверов баз данных:

  • DB2;

  • InterBase;

  • MySQL;

  • Oracle;

  • Microsoft SQL Server 2000.

Драйверы реализованы в виде динамических библиотек, а при необходимо­сти могут быть прикомпилированы непосредственно к исполняемому файлу приложения. Поэтому проблема распространения совместно с приложением средств доступа к данным в случае с dbExpress снимается полностью. Есте­ственно, на компьютере должно быть установлено клиентское ПО соответ­ствующего SQL сервера.

Кроме того, технология dbExpress обеспечивает доступ к данным в кросс-платформенных приложениях для Windows и Linux, т. к. применяется и в Delphi и Kylix , а способы ее применения идентичны.

Таким образом, технология dbExpress является наилучшим решением для приложений, в которых необходим быстрый и необременительный про­смотр данных серверов SQL. И вряд ли он подойдет для сложных клиент-серверных или многоуровневых приложений, обеспечивающих серьезную работу с данными.

Технология dbExpress представляет собой совокупность драйверов, компо­нентов, инкапсулирующих соединения, транзакции, запросы и наборы дан­ных, а также интерфейсов, обеспечивающих универсальный доступ к функ­циям dbExpress.

Компоненты dbExpress располагаются в Палитре компонентов на одно­именной странице.