Доступ к данным по технологии ADO
Разработанная корпорацией MicroSoft технология ADO (ActiveX Data Objects) обеспечивает более универсальный доступ к любым данным (базы данных, обычные файлы, электронная почта, мультимедиа и др.) без использования механизма BDE. Для каждого типа данных (СУБД) существует программа‑поставщик (OLE DB Provider) через которую организуется доступ к данным. Приложение, использующее технологию ADO, не зависит от конкретной СУБД, т.е. при необходимости можно сменить СУБД, не изменяя кода приложения (свойство масштабирования приложения). Компоненты этой технологии находятся на панели ADO.
Рекомендуется создавать модуль данных с описанием таблиц базы и вычисляемых полей и с базовым и другими запросами (п. 3.3).
Рассмотрим использование компонентов на примере обработки таблицы «Uchjot stroek» базы данных «Учет строек.mdb» с СУБД Access. Создадим новое приложение и разместим на форме компонент связи ADOConnectionпод именем ADOConnection1. Сформируем значение свойства ConnectionString (строка подключения), нажав кнопку с троеточием в поле ввода значения. В появившемся окне нажмем кнопку Build для вызова окна Data Link Properties (рис. 3.15.1).
Рис.3.15.1. Страницы выбора поставщика OLE DB и соединения с базой данных
На странице Provider можно выбрать для СУБД Access поставщик Mocrosoft Jet OLE DB Provider или Microsoft OLE DB Provider for ODBC Drivers. Выберем последний как более универсальный и нажмем клавишу Next. На странице Connection установим переключатель Use connection string и нажмем кнопку Build для выбора нужного файла базы «Учет строек.mdb». Для проверки соединения нажмем кнопку Test Connection. Закроем все окна. Так как при доступе к базе не указываются имя пользователя и пароль, то установим свойства этого компонента LoginPrompt=False.
Компоненты этой технологии находятся на панели ADO.
Рекомендуется создавать внешний источник данных ODBC. Командой Пуск/Настройка/Панель управления/Источники данных ODBC (32) запускается Администратор источников данных. Используя страницу Пользовательский DSN (источники доступны только текущему пользователю), Системный DSN (источники доступны всем пользователям) или Файловый DSN (файлы), можно установить доступ к конкретному файлу (базе данных, электронной таблице, текстовому файлу): указать DSN‑имя (для ссылки в программах), тип драйвера, пароль, имя пользователя и другую дополнительную информацию. Кнопками Добавить, Удалить и Настройка можно добавлять, удалять и изменять описания источников. При наличии внешнего источника данных имя источника указывается (путем выбора из списка внешних источников) для свойств DatabaseName (компонент Table), ConnectionString/Connection (компоненты ADOConnection, ADOTable) и для других соответствующих свойств компонентов, связанных с базами данных. Таким образом, однократное создание внешнего источника данных ODBC позволяет его многократное использование при разработке приложений на различных языках программирования, что существенно упрощает разработку и корректировку приложений.
Добавим на форму новый компонент ADOTable со свойствами: Connection=ADOConnection1, TableName=«Uchjot stroek», Active=True, Name=ADOTable1. Далее разместим компоненты: DataSource (со свойствами Name=DataSource1, DataSet=ADOTable1), DBGrid и DBNavigator (DataSource= DataSource1) (рис. 3.15.2).
Рис. 3.15.2. Изображение на форме компонентов и таблицы строек
Рассмотрим остальные компоненты панели ADO.
DataSet‑ для работы с набором данных (таблица или запрос).
Основные свойства
CommandText, CommandType, CursorType‑ текст и тип выполняемой команды (таблица, SQL или хранимая процедура) или курсора.
Connection, ConnectionString‑ имя компонента связи и источника данных.
CursorLocation‑ способ использования указателя: со стороны клиента (больше возможности, но медленная работа) или сервера.
ExecuteOptions‑ способы выполнения команд.
MarshalOptions‑ синхронизация клиентского и серверного наборов.
ParamCheck=True ‑ список параметров подстраивается под команду SQL.
Prepared=True - есть предварительная подготовка команды к выполнению.
RecordCount, RecordSize‑ число записей в наборе и размер записи.
RecordSetState, RecordStatus‑ состояние объекта ADO и текущей записи.
Основные методы
Clone(...), DeleteRecord(..) ‑ копирование набора, удаление записей.
Requery(...) ‑ обновление набора (перезапуск команды SQL).
Seek(...) ‑ поиск записи по текущему индексу.
Supports(...) ‑ проверка на допустимость вида действия.
Основные события
OnEndOfRecordset‑ достигнут конец набора.
On Fetch/FieldChangeComplete‑ завершена корректировка набора/поля.
OnFetchProgress‑ периодически генерируется в процессе корректировки.
OnMoveComplete/OnWillMove‑ выполненно/будет перемещение указателя.
On Record/Recordset ChangeComplete ‑ запись/набор изменен.
OnWillChange Field/Record/Recordset ‑ поле/запись/набор будет изменен.
ADOCommand‑ вызывает метод обработки данных (например, команды SQL). Сама команда задается в свойстве CommandText. Метод Execute выполняет команду и возвращает набор, который далее можно использовать (ADODataSet1.RecordSet:=ADOCommand1.Execute).
ADOQuery‑ компонент для формирования запроса аналогичен компоненту Query. Запрос выполняется методом ExecSQL, который может возвращать и набор, используемый далее (ADODataSet1.RecordSet:= ADOQuery1.ExecSQL).
ADOStoredProc‑ для выполнения хранимой процедуры, указанной в свойстве ProcedureName (формируется автоматически при установлении связи через компонент ADOConnection), с параметрами в свойстве Parameters.
RDSConnection‑ создание многоуровневых приложений; используется вместо компонента ADOConnection. Для связи с ним имя его указывается в свойстве RDSConnection (вместо Connection) других компонентов.
Вопросы для самопроверки и контроля
Вопросы для самопроверки
1. Что содержит модуль данных и для чего он используется?
2. Каково назначение компонента Table?
3. Каково назначение компонента DataSource?
4. Каково назначение компонентаDBGrid?
5. Каково назначение компонентаDBNavigator?
6. Каково назначение компонентаDBText?
7. Каково назначение компонентаDBEdit?
8. Каково назначение запросов?
9. Что такое «подзапрос»?
10. Каково назначение транзакции?
11. Каковы дополнительные возможности клиент‑серверных СУБД?
Контрольные вопросы
1. Должны ли быть динамические поля в таблице?
2. Можно ли редактировать динамические поля?
3. Постоянные(виртуальные или псевдополя) поля должны быть в таблице?
4. Постоянные(виртуальные или псевдополя) поля можно редактировать?
5. Каково назначение базового запроса?
6. Допускается ли вложенность запросов?
7. Каково назначение компонента QuickRep?
8. Какая технология доступа к данным более универсальная: ADO (ActiveX Data Objects) или BDE (Borland Database Engine)?
Дата добавления: 2016-03-22; просмотров: 975;