- •Bde та ado
- •Введение
- •Введение в базы данных
- •Типы субд
- •Стандарт odbc
- •Технологии взаимодействия delphi с бд
- •Особенности технологии bde
- •Особенности технологии ado
- •Таблицы бд и связи между ними
- •Первичные ключи и индексы
- •Демонстрационная бд "поставщик книг"
- •Использование odbc для подключения источника данных. Внешний псевдоним бд
- •Создание внешнего псевдонима бд
- •Создание проекта с бд в технологии bde
- •Особенности использованияbdeдля соединения с источником данных
- •Структура проекта с бд и визуальными компонентами
- •Активизация проекта
- •Главная форма проекта
- •Модуль данных
- •Создание модуля данныхTDataModule
- •Создание компонента tDatabase
- •Создание компонента tTable
- •Создание компонентаTDataSource
- •Связь модуля главного окна с модулем данных
- •Связь сеткиTdbGrid и навигатораDbNavigatorcисточником данныхTDataSource
- •Связь главный-детальный между наборами данных
- •Задание реляционной связи между наборами данных
- •Активизация наборов данных
- •Недостатки полученных решений и пути их устранения
- •Объекты-столбцы сетки dbGrid
- •Объекты-поля наборов данных
- •Создание объектов-полей
- •Присоединение к наборам данных новых полей
- •Присоединение полей из других таблиц. Подстановочные поля
- •Вычисляемые поля
- •Обработчики событий компонент работы с бд
- •Обработчики событий OnGetText полей нд и компонента визуализации данныхTdbGrid
- •Установка системных переменных в обработчике событяOnCreate
- •Бизнес-правила иобработчики событий компонент работы с бд
- •Implementation
- •Sql запросы к бд
- •КомпонентtQuery
- •СозданиекомпонентаtQuery
- •ИспользованиякомпонентаtQuery
- •Свойство sql
- •Методы Open и ExecSql
- •Параметрические запросы
- •Параметрические запросы и свойство DataSource компонента tQuery
- •Связь главный-детальный с компонентомTQuery в качестве детального набора данных
- •Доступ к полям запроса
- •Обращение к значению поля при помощи свойств объектов-полейValueиAsXxxx
- •Обращение к значению поля при помощи свойств набора данных Fields и FieldValues
- •Обращение к значению поля при помощи функции набора данных FieldByName
- •Программный доступ к данным запроса
- •Общая схема программного доступа к данным запроса
- •Последовательная навигация по записям
- •Обзор событий компонентаtQuery
- •Хранимые процедуры и триггеры
- •Хранимые процедуры
- •Создание хранимых процедур
- •Вызов хранимых процедур
- •Триггеры
- •Наборы данных
- •Обзор событий класса tdbDataSet
- •Реализация каскадных изменений и бизнес-правил
- •Другие события
- •Технология ado
- •Основные особенности технологии ado
- •Реализация технологии ado в Delphi
- •Создание проекта с бд в технологии ado. Установка связи с бд
- •Создание модуля данных
- •Начало настройки связи
- •Выбор провайдера
- •Настройка провайдера
- •Настройка провайдераMicrosoftJet4.0oledbProvider
- •Настройка провайдера Microsoft ole db Provider for odbc Drivers
- •Завершение настройки связи
- •Настройка оставшихся компонент модуля данных
- •Особенности использования компонентов ado
- •Базовые объекты ado
- •ОбъектRecordset
- •ОбъектCommand
- •ОбъектParameter
- •Компонент tadoCommand
- •Свойства, методы и события ado компонентов-наборов
- •Общие свойства с bde-компонентами
- •Специфические свойства
- •Методы класса tCustomAdoDataSet
- •События класса tCustomAdoDataSet
- •Компонент tadoDataSet
- •Компонент tadoTable
- •Компонент tadoQuery
- •Компоненты визуализации данных вDelphi
- •Компонент tdbGrid
- •Свойства
- •Дополнительные возможности сетки
- •Компоненты визуализации полей текущей записи
- •Компонент tdbText
- •Компонент tdbEdit
- •Компонент tdbCheckBox
- •Компонент tdbRadioGroup
- •Списочные компоненты
- •Компонент tdbMemo
- •Компонент tdbRichEdit
- •Компонент tdbCtrlGrid
- •Компонент tdbNavigator
- •Приложение 2. Бд "поставщик книг"
- •Рекомендованная литература
Технология ado
Основные особенности технологии ado
Особенности технология ADO(ActiveXDataObjects— объекты данных, построенные как объектыActiveX) более подробно рассмотрены в подразделе1.5. Здесь важно подчеркнуть следующее:
Основные особенности использования технологии ADOне зависят от архитектурыБД. Эта технология характерна для файл-серверных, клиент-серверных и трехзвенныхБД. Она обеспечивает универсальный способ доступа к самым разнообразным источникам данных — от серверовSQLдо электронных таблиц типаExcel.
Основным достоинством технологии ADOявляется ее естественная ориентация на созданиеоблегченного (тонкого)клиента.
В рамках этой технологии:
На машине разработчикаБДустанавливаютсябазовые объектыMSADO (C:\Program Files\Common Files\System\ADO);
На машине сервера данныхустанавливаетсяпровайдер (поставщик) данных— надстройка над специальной технологией нижнего уровняOLE DB, которая воспринимает запросы объектовADOи переводит их в нужные действия с данными;
Взаимодействие компонентов ADOи провайдера осуществляется на основе универсальной дляWindowsтехнологииActiveX, причем провайдер реализуется какСОМ-сервер, аADO-компоненты — какСОМ-клиенты.
На машине сервера данных создается и размещается источник данных. В случае файл-серверных систем отдельные таблицы типа dBASE,FoxPro,Paradoxи т. п. должны управляться соответствующимODBC-драйвером, а в роли провайдера используетсяMicrosoftOLE DBProvider for ODBC drivers.
Если используется промышленный сервер данных OracleилиMSSQL Server, данные не нуждаются в какой-либо предварительной подготовке, а в роли провайдера используется соответственноMicrosoftOLE DB Provider forOracleилиMicrosoftOLE DBProvider forSQL Server.
Если для какого либо промышленного сервера, например, InterBase,Informix,DB2и ряда других нужные провайдеры отсутствуют, то можно воспользоваться ихODBC-драйверами.
Реализация технологии ado в Delphi
Компоненты ADOв палитре компонентовDelphiпредставляют собойнадстройкинад базовыми объектамиMSADOи представляют большинство свойств, методов и событий этих объектов в привычном дляDelphiвиде. В результате работа с такими компонентами практически полностью совпадает с работой с компонентамиBDE.
У MS ADO имеется 7 базовых объектов: Connection, Recordset, Command, Parameter, Field Error и Property.
Базовые объекты MSADOобычно сопровождаются коллекциями связанных с ними объектов. Например, с объектом:
Connectionможет быть связан один или несколько объектовError, фиксирующих ошибки установления связи;
Recordset— набор объектовField, каждый из которых определяет единственное поле результирующегоНД;
Command— один или несколько объектовParameter, конкретизирующих выполнение методаExecuteэтого объекта, и коллекция объектовErrorи т. д.
В связи с этим говорят об основных - Connection,RecordsetиCommand,и вспомогательных -Error,FieldиParameterProperty,базовых объектахADO.
Базовые объекты MSADO входят в комплект поставки Delphi. Они устанавливаются в Windows, если в окне установки Delphi не снят флажок Install/Upgrade Microsoft Data Access Client.
На основе базовых объектов MSADOвDelphiсозданы соответствующие компоненты-наборыTADOTable,TADOQuery,TADOStoredProc, повторяющие в функциональном отношении компонентыBDEсоответственно -TTable,TQuery,TStoredProc.
Кроме того, в Delphi входят компоненты TADOConnection, TADOCommand, TADODataSet, TRDCConnection. Связь между базовыми объектами MSADOи соответствующими компонентамиDelphiрассматривается ниже в разделе10.4.
Компонент для создания хранимых на сервере процедур TADOStoredProcи компонентTRDSConnection,созданный для упрощения связи сMSInternetExplorerпри разработке интранет-приложений, предназначены для поддержки соответственно клиент-серверной и трехзвенной архитектур и здесь рассматриваться не будут.
Обобщенная структура реализации технологии ADOвDelphi приведена на рисунке10.1. На рисунке со стороны клиента показаны только4-ре наиболее распространенные компонентыADOвDelphi
|
|
|
|
|
Компоненты TDataSource |
|
Визуальные компоненты | ||
|
|
| ||
Сервер |
Клиент |
Рисунок 7.56 – Реализация технологии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.