- •Технології проектування баз даних в delphi
- •6.051001 - Метрологія та інформаційно-вимірювальні технології
- •Технології проектування баз даних в delphi
- •6.051001 - Метрологія та інформаційно-вимірювальні технології
- •1Введение
- •2Введение в базы данных
- •2.1Типы субд
- •2.2Стандарт odbc
- •2.3Технологии взаимодействия delphi с бд
- •2.3.1Особенности технологии bde
- •2.3.2Особенности технологии ado
- •2.4Таблицы бд и связи между ними
- •2.5Первичные ключи и индексы
- •2.6Демонстрационная бд "поставщик книг"
- •3Использование odbc для подключения источника данных. Псевдонимы бд
- •3.1Внешний и внутренний псевдонимы бд
- •3.1.1Создание внешнего псевдонима
- •3.1.2Проверка работоспособности внешнего псевдонима в среде Delphi
- •3.2Внутренний псевдоним бд
- •3.2.1Назначение внутреннего псевдонима бд
- •3.2.2Создание внутреннего псевдонима
- •3.2.3Преимущества использования внутреннего псевдонима и проблемы перехода на другие субд
- •4Создание проекта с бд в технологии bde
- •4.1Особенности использования bde для соединения с источником данных
- •4.2Структура проекта с бд и визуальными компонентами
- •4.3Активизация проекта
- •4.4.4Компоненты tdbGrid
- •4.5Модуль данных
- •4.5.1Создание модуля данных tDataModule
- •4.5.2Связь модуля главного окна с модулем данных
- •4.5.3Создание компонента tDatabase
- •4.5.4Создание компонента tTable
- •4.5.5Создание компонента tDataSource
- •4.5.6Связь модуля главного окна с модулем данных
- •4.5.7Связь сетки tdbGrid и навигатора dbNavigator c источником данных tDataSource
- •4.5.8Связь главный-детальный между наборами данных
- •4.5.9Задание реляционной связи между наборами данных
- •4.5.10Активизация наборов данных
- •4.5.11Недостатки полученных решений и пути их устранения
- •4.6Объекты-столбцы сетки dbGrid
- •4.6.1Создание объектов-столбцов
- •4.6.2Редактирование объекта-столбца
- •4.7Объекты-поля наборов данных
- •4.7.1Назначение объектов-полей
- •4.7.2Создание объектов-полей
- •4.7.3Присоединение к наборам данных новых полей
- •4.7.4Присоединение полей из других таблиц. Подстановочные поля
- •4.7.5Вычисляемые поля
- •4.8Обработчики событий компонент работы с бд
- •4.8.1Обработчики событий OnGetText полей нд и компонента визуализации данных tdbGrid
- •4.8.2Установка системных переменных в обработчике событя OnCreate
- •4.9Бизнес-правила и обработчики событий компонент работы с бд
- •5Sql запросы к бд
- •5.1Компонент tQuery
- •5.2Создание компонента tQuery
- •5.3Использования компонента tQuery
- •5.3.1Свойство sql компонента tQuery
- •5.3.2Методы Open и ExecSql
- •5.3.3Схема программного формирования sql-запроса
- •5.3.4Параметрические запросы
- •5.3.5Параметрические запросы и свойство DataSource компонента tQuery
- •5.3.6Связь главный-детальный с компонентом tQuery в качестве детального набора данных
- •5.4Доступ к полям запроса
- •5.4.1Обращение к значению поля при помощи свойств объектов-полей Value и AsXxxx
- •5.4.2Обращение к значению поля при помощи свойств набора данных Fields и FieldValues
- •5.4.3Обращение к значению поля при помощи функции набора данных FieldByName
- •5.5Программный доступ к данным запроса
- •5.5.1Общая схема программного доступа к данным запроса
- •5.5.2Последовательная навигация по записям
- •5.6Обзор событий компонента tQuery
- •6Хранимые процедуры и триггеры
- •6.1Хранимые процедуры
- •6.2Создание хранимых процедур
- •6.3Вызов хранимых процедур
- •6.4Триггеры
- •7Наборы данных
- •7.1Обзор событий класса tdbDataSet
- •7.1.1Реализация каскадных изменений и бизнес-правил
- •7.1.2Другие события
- •8Технология ado
- •8.1Основные особенности технологии ado
- •8.2Реализация технологии ado в Delphi
- •8.3Создание проекта с бд в технологии ado. Установка связи с бд
- •8.3.1Создание модуля данных
- •8.3.2Начало настройки связи
- •8.3.3Выбор провайдера
- •8.3.4Настройка провайдера
- •8.3.5Настройка провайдера Microsoft Jet 4.0 ole db Provider
- •8.3.6Настройка провайдера Microsoft ole db Provider for odbc Drivers
- •8.3.7Завершение настройки связи
- •8.3.8Настройка оставшихся компонент модуля данных
- •8.4Особенности использования компонентов ado
- •8.4.1Базовые объекты ado
- •8.4.2Объект Recordset
- •8.4.3Объект Command
- •8.4.8Связной компонент tadoConnection
- •8.4.9Компонент tadoCommand
- •8.5Свойства, методы и события ado компонентов-наборов
- •8.5.1Общие свойства с bde-компонентами
- •8.5.2Специфические свойства
- •8.5.3Методы класса tCustomAdoDataSet
- •8.5.4События класса tCustomAdoDataSet
- •8.6Компонент tadoDataSet
- •8.7Компонент tadoTable
- •8.8Компонент tadoQuery
- •9Компоненты визуализации данных в Delphi
- •9.1Компонент tdbGrid
- •9.1.1Свойства
- •9.1.2Дополнительные возможности сетки
- •9.2Компоненты визуализации полей текущей записи
- •9.2.1Компонент tdbText
- •9.2.2Компонент tdbEdit
- •9.2.3Компонент tdbCheckBox
- •9.2.4Компонент tdbRadioGroup
- •9.2.5Списочные компоненты
- •9.2.6Компонент tdbMemo
- •9.2.7Компонент tdbRichEdit
- •9.2.8Компонент tdbCtrlGrid
- •9.2.9Компонент tdbNavigator
- •Приложение 2. Бд "поставщик книг"
- •Рекомендованная литература
8Технология ado
8.1Основные особенности технологии ado
Особенности технология ADO (ActiveX Data Objects — объекты данных, построенные как объекты ActiveX) более подробно рассмотрены в подразделе 1.5. Здесь важно подчеркнуть следующее:
Основные особенности использования технологии ADO не зависят от архитектуры БД. Эта технология характерна для файл-серверных, клиент-серверных и трехзвенных БД. Она обеспечивает универсальный способ доступа к самым разнообразным источникам данных — от серверов SQL до электронных таблиц типа Excel.
Основным достоинством технологии ADO является ее естественная ориентация на создание облегченного (тонкого) клиента.
В рамках этой технологии:
На машине разработчика БД устанавливаются базовые объекты MS ADO (C:\Program Files\Common Files\System\ADO);
На машине сервера данных устанавливается провайдер (поставщик) данных — надстройка над специальной технологией нижнего уровня OLE DB, которая воспринимает запросы объектов ADO и переводит их в нужные действия с данными;
Взаимодействие компонентов ADO и провайдера осуществляется на основе универсальной для Windows технологии ActiveX, причем провайдер реализуется как СОМ-сервер, а ADO-компоненты — как СОМ-клиенты.
На машине сервера данных создается и размещается источник данных. В случае файл-серверных систем отдельные таблицы типа dBASE, FoxPro, Paradox и т. п. должны управляться соответствующим ODBC-драйвером, а в роли провайдера используется Microsoft OLE DB Provider for ODBC drivers.
Если используется промышленный сервер данных Oracle или MS SQL Server, данные не нуждаются в какой-либо предварительной подготовке, а в роли провайдера используется соответственно Microsoft OLE DB Provider for Oracle или Microsoft OLE DB Provider for SQL Server.
Если для какого либо промышленного сервера, например, InterBase, Informix, DB2 и ряда других нужные провайдеры отсутствуют, то можно воспользоваться их ODBC-драйверами.
8.2Реализация технологии ado в Delphi
Компоненты ADO в палитре компонентов Delphi представляют собой надстройки над базовыми объектами MS ADO и представляют большинство свойств, методов и событий этих объектов в привычном для Delphi виде. В результате работа с такими компонентами практически полностью совпадает с работой с компонентами BDE.
У MS ADO имеется 7 базовых объектов: Connection, Recordset, Command, Parameter, Field Error и Property.
Базовые объекты MS ADO обычно сопровождаются коллекциями связанных с ними объектов. Например, с объектом:
Connection может быть связан один или несколько объектов Error, фиксирующих ошибки установления связи;
Recordset — набор объектов Field, каждый из которых определяет единственное поле результирующего НД;
Command — один или несколько объектов Parameter, конкретизирующих выполнение метода Execute этого объекта, и коллекция объектов Error и т. д.
В связи с этим говорят об основных - Connection, Recordset и Command, и вспомогательных - Error, Field и Parameter Property, базовых объектах ADO.
Базовые объекты MS ADO входят в комплект поставки Delphi. Они устанавливаются в Windows, если в окне установки Delphi не снят флажок Install/Upgrade Microsoft Data Access Client.
На основе базовых объектов MS ADO в Delphi созданы соответствующие компоненты-наборы TADOTable, TADOQuery, TADOStoredProc, повторяющие в функциональном отношении компоненты BDE соответственно - TTable, TQuery, TStoredProc.
Кроме того, в Delphi входят компоненты TADOConnection, TADOCommand, TADODataSet, TRDCConnection. Связь между базовыми объектами MS ADO и соответствующими компонентами Delphi рассматривается ниже в разделе 10.4.
Компонент для создания хранимых на сервере процедур TADOStoredProc и компонент TRDSConnection, созданный для упрощения связи с MS Internet Explorer при разработке интранет-приложений, предназначены для поддержки соответственно клиент-серверной и трехзвенной архитектур и здесь рассматриваться не будут.
Обобщенная структура реализации технологии ADO в Delphi приведена на рисунке 10.1. На рисунке со стороны клиента показаны только 4-ре наиболее распространенные компоненты ADO в Delphi
|
|
|
|
|
Компоненты TDataSource |
|
Визуальные компоненты |
||
|
|
|
||
Сервер |
Клиент |
|||
Рисунок 7.66 – Реализация технологии ADO в Delphi
На машине клиента располагаются связные компоненты TADOConnection и компоненты-наборы данных TADOTable, TADOQuery, TADOStoredProc, а также не показанные на рисунке компоненты-наборы TADODataSet и командные компоненты TADOCommand. Каждый из этих компонент может связываться с провайдером данных одним из двух способов:
с помощью специального связного компонента TADOConnection;
минуя связной компонент и используя собственное свойство ConnectionString.
Компонент TADOConnection играет роль концентратора соединений с источником данных компонентов-наборов, и в этом смысле он подобен компоненту TDatabase в традиционной архитектуре с BDE, однако без него можно и обойтись.
Компонент-набор TADODataSet является универсальным компонентом связи с наборами данных. Он может работать в различных режимах, заменяя компоненты TADOTable, TADOQuery и TADOStoredProc, и может связываться с одной или несколькими таблицами БД. Его связь с БД может осуществляться непосредственно или через компонент TADOConnection.
Командный компонент TADOCommand предназначен для реализации SQL-запросов, которые не возвращают данные (запросы типа CREATE, DROP, UPDATE и т. п.).
Компоненты-наборы с помощью компонентов-источников TDataSource и визуализирующих компонентов TDBGrid и т.п. обеспечивают необходимый интерфейс с пользователем программы.
В качестве общей характеристики использования ADO в Delphi можно отметить, что по некоторым параметрам BDE предпочтительнее ADO, а по другим ADO предпочтительнее BDE. Так, например:
Скорость доступа к данным с помощью средств СОМ, являющихся краеугольным камнем ADO, в общем случае оказывается заметно ниже скорости, обеспечиваемой традиционным для Delphi механизмом на основе BDE;
Источники данных ADO не всегда могут работать со всеми типами полей конкретной СУБД;
ADO поставляется с Windows и поэтому не требуется заботиться об установке на машине заказчика BDE;
ADO не имеет проблем с кириллицей;
ADO.Net является основным средством работы с БД в технологии .Net и различных реализациях Java.
