
Лекции по АРМ произв. менеджера / Лекция SQL Server и Delphi / Лекция 5 Технология ADO работы с БД
.docЛекция 16
Тема: Технология ADO в Delphi
Для организации в Delphi доступа к базам данных можно применять различные технологии. Раньше использовали механизм BDE. Это набор библиотек DLL для организации низкоуровневого доступа данным различных форматов. Достоинство: высокая скорость обработки, недостаток – сложность написания программного кода.
Технология ADO – это организация доступа к базам данных на высоком уровне. При этом технология не зависит от архитектуры баз данных, что является достоинством. Проигрыш в снижении скорости доступа данным.
Технология ADO и интерфейсы OLE DB обеспечивают для приложений единый способ доступа к источникам данных различных типов (рис 1). Например, приложение, использующее ADO, может применять одинаково сложные операции и к данным, хранящимся на корпоративном сервере SQL, и к электронным таблицам, и локальным СУБД. Запрос SQL, направленный любому источнику данных через ADO, будет выполнен.
Рис.1. Схема доступа к данным через ADO
Возникает вопрос: каким образом источники данных смогут выполнить запрос?
За серверы БД беспокоиться не стоит, обработка запросов SQL— основная обязанность. Но как быть с файловыми последовательностями, электронными таблицами, файлами электронной почты и т. д. Здесь на помощь приходят механизмы ADO и интерфейсы OLE DB.
OLE DB представляет собой набор специализированных объектов, инкапсулирующих стандартные функции обработки данных, и специализированные функции конкретных источников данных и интерфейсов, обеспечивающих передачу данных между объектами.
Согласно терминологии ADO, любой источник данных (база данных, электронная таблица, файл) называется хранилищем данных, с которым при помощи провайдера данных взаимодействует приложение. Минимальный набор компонентов приложения может включать объект соединения, объект набора данных, объект процессора запросов.
Примечание:
Приложение обращается не прямо к источнику данных, а к объекту OLE DB, который "умеет" представить данные (например, из файла электронной почты) в виде таблицы БД или результата выполнения запроса SQL..
Технология ADO в целом включает в себя не только сами объекты OLE DB, и механизмы, обеспечивающие взаимодействие объектов с данными и приложениями. На этом уровне важнейшую роль играют провайдеры ADO, координирующие работу приложений с хранилищами данных различных типов.
Такая архитектура позволяет сделать набор объектов и интерфейсов открытым и расширяемым. Набор объектов и соответствующий провайдер может быть создан для любого хранилища данных без внесения изменений в исходную структуру ADO. При этом существенно расширяется само понятие данных — ведь можно разработать набор объектов и интерфейсов и для нетрадиционных табличных данных. Например, это могут быть графические данные геоинформационных систем, древовидные структуры из системных реестров, данные CASE-инструментов и т. д.
Так как технология ADO основана на стандартных интерфейсах СОМ, которые являются системным механизмом Windows, это сокращает общий объем работающего программного кода и позволяет распространять приложения БД без вспомогательных программ и библиотек.
Провайдеры ADO
Провайдеры ADO обеспечивают соединение приложения, использующего данные через ADO, с источником данных (сервером SQL, локальной файловой системой и т. д.). Для каждого типа хранилища данных существовать провайдер ADO.
Провайдер "знает" о местоположении хранилища данных и умеет обращаться к данным с запросами и интерпретировать возвращаемую служебную информацию и результаты запросов с целью их передач приложению.
Список установленных в данной операционной системе провайдеров доступен для выбора при установке соединения через компонент TADOConnection.
При инсталляции Microsoft ActiveX Data Objects в операционной системе устанавливаются следующие стандартные провайдеры.
Microsoft Jet OLE DB Provider обеспечивает соединение с данными Access.
Microsoft OLE DB Provider for Internet Publishing позволяет использовать ресурсы, предоставляемые Microsoft FrontPage, Microsoft Information Server, НТТР-файлы.
Microsoft Data Shaping Service for OLE DB позволяет использовать иерархические наборы данных.
Microsoft OLE DB Simple Provider предназначен для организации доступа к источникам данных, поддерживающим только базисные возможности OLE DB.
Microsoft OLE DB Provider for ODBC drivers обеспечивает доступ к данным, которые уже "прописаны" при помощи драйверов ODBC. Однако реальное использование столь экзотичных вариантов соединений представляется проблематичным. Драйверы ODBC и так славятся своей медлительностью, поэтому дополнительный слой сервисов здесь ни к чему.
Microsoft OLE DB Provider for Oracle обеспечивает соединение с сервером Oracle.
Microsoft OLE DB Provider for SQL Server обеспечивает соединение с сервером Microsoft SQL Server.
Реализация ADO в Delphi
Механизм доступа к данным через ADO и многочисленные объекты и интерфейсы реализованы в Delphi в виде набора компонентов, расположенных на странице ADO. Все необходимые интерфейсы, обеспечивающие работу компонентов, объявлены и описаны в файлах OleDB.pas и ADODB.pas в папке \DelphiASource\Vcl.
Компоненты ADO
Компонент ADOConnection вобрал возможности перечислителя, источника и сессии с возможностями обслуживания транзакций. Находится на вкладке ADO.
Основным свойством является свойство ConnectionString. Оно устанавливает связь с хранилищем данных. После задания этого свойства используется свойство Active логического типа или метод Open (Close). Они устанавливают или разрывают связь с хранилищем данных. Для установления связи с хранилищем данных установить значение True или запустить метод Open. Для разрыва связи установить значение False или запустить метод Close. Эти действия можно реализовать программно на этапе выполнения.
Другим компонентом является компонент ADOTABLE. Находится на странице ADO. Является аналогом компонента TABLE. Обслуживает данные, состоящие из записей одной таблицы БД. Имя таблицы указывается в свойстве TableName. В свойстве Connection следует указать имя компонента ADOConnection1. Установление связи указывается в свойстве Active.
Компонент DATASOURСE (страница Доступ к данным) является промежуточным звеном между компонентом ADOTABLE и визуальными компонентами DBGRID и DBNAVIGATOR. В компоненте DATASOURСE следует в свойстве DATASET выбрать имя связующего компонента ADOTABLE.
Визуальный компонент DBGRID находится на странице Доступ к данным. Является аналогом рассмотренного ранее компонента STRINGGRID. Отображает содержимое таблицы в виде сетки. В нем строки соответствуют записям, а столбцы – полям таблицы базы данных. Для свойства DATASOURCE следует указать имя используемого промежуточного компонента DATASOURCE.
Компонент DBNAVIGATOR находится также на странице Доступ к данным. Организует перемещения по таблице базы данных. Для свойства DATASOURCE следует указать имя используемого промежуточного компонента DATASOURCE, т.е. настройка осуществляется как и для предыдущего компонента.
Организация работы с базой данных Ms Access
Создадим базу данных из трех связанных таблиц Клиенты, Товары, заказы. Созданную базу данных формата сохраним в текущей папке проекта Delphi.
Создадим в Delphi новый проект и на форме разместим рассмотренные ранее компоненты (рис. 1).
Рис. 1 Пример формы для работы с БД
Рассмотрим последовательность настройки компонентов.
Через двойной щелчок откроем окно настройки компонента ADOConnection1. Оно будет иметь вид рис. 2.
Рис. 2 Окно настройки компонента ADOConnection1
Далее щелкнем по кнопке Build…(создать связь с БД). Откроется следующее окно (рис. 3).
Рис. 3 Окно выбора провайдера услуг
Далее выберем в качестве провайдера выделенную строку. Через кнопку Далее перейдем к рис. 4.
Рис. 4 Окно связи с данными
Далее выберем путь и имя файла, в котором находится база данных. Отметим, что базы данных Ms Access хранятся в файлах с расширением mdb. Можно также указать сведения для входа в БД, т.е. логин и пароль..
Далее следует щелкнуть по кнопке Проверить подключение. В результате правильного соединения увидим следующее окно
На этом настройка компонента ADOConnection1 завершается.
Настройка компонента ADOTABLE1.
Свойство Значение
CONNECTION ADOConnection1
TABLENAME выбрать имя таблицы БД из списка таблиц
ACTIVE TRUE.
Настройка компонента DATASOURCE1
Свойство Значение
DATASET ADOTABLE1.
Настройка компонентов DBGRID1 и NAVIGATOR1
Свойство Значение
DATASOURCE DATASOURCE1.
Затем следует проект сохранить и запустить на выполнение. В результате в компоненте DBGRID1 увидим данные выбранной таблицы базы данных. Далее можно редактировать значения полей таблицы.
Можно программно организовать доступ ко всем таблицам БД.