- •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. Бд "поставщик книг"
- •Рекомендованная литература
Компонент tadoDataSet
Компонент TADODataSet обеспечивает доступ к одной или нескольким таблицам БД с помощью запроса типа SELECT. Компонент рассчитан только на возвращение набора данных, поэтому его нельзя использовать для выполнения подмножества операторов DDL. В компоненте есть свойство CommandText, однако в него можно поместить только оператор SELECT.У этого свойства имеется специализированный текстовый редактор, с помощью которого можно сформировать команду. Этот редактор (рисунок 11.13) вызывается щелчком на кнопке с многоточием в строке свойства CommandText инспектора объектов.
В отличие от компонента TADOTable компонент TADODataSet может обращаться не только к одной, но сразу к нескольким таблицам. Ниже показан результат текст запроса к двум таблицам, выполняемого с помощью компонента ADODataSet.
SELECT FirmID, FName, NPayedSum
FROM FIRMS, NAKLS
WHERE FirmID = NFirm
Компонент TADODataSet — единственный компонент-набор, с помощью которого можно установить связь с удаленным источником данных TRDSConnaction при создании трехзвенной архитектуры. Для этого у него определено следующее свойство:
property RDSConnection: TRDSConnection;
Если компонент TADODataSet связан с единственной таблицей, можно воспользоваться его методом GetlndexNames, чтобы получить список всех имен табличных индексов. Например:
ADODataSet1.GetlndexNames(Memo1.Lines) ;
Остальные свойства, методы и события компонент TADODataSet наследует от своих предков TCustomADODataSet и TDataSet.
Компонент tadoTable
Компонент TADOTable является прямым аналогом BDE-компонента ТТаblе. Так же как ТТаblе, он способен получать и обслуживать НД, состоящий из записей единственной физической таблицы БД, имя которой содержит его свойство TableName. Являясь, как и все остальные компоненты-наборы, надстройкой над базовым объектом Command, компонент TADOTable имеет свойство CommandText, которое недоступно программисту. Значение этого свойства у него формируется автоматически по имени связанной таблицы:
Command.CommandString := 'SELECT * FROM TableName';
Здесь TableName — имя связанной таблицы.
Это, однако, не мешает компоненту TADOTable работать в режиме кэшированных изменений (в режиме пакетной обработки). Свойство CommandType базового объекта, связанного с компоненту TADOTable, всегда имеет значение cmdText, так что остается изменить лишь единственное свойство LockType (свойство CursorType у компонента автоматически имеет значение ctKeySet):
ADOTable1.LockType := ltBatchOptimistic;
ADOTable1.Open;
После этого компонент готов к режиму пакетной обработки.
Компонент tadoQuery
В отличие от компонента TADOCommand компонент TADOQuery преимущественно предназначен для получения набора записей из одной или нескольких таблиц БД. На самом деле компонент TADOQuery фактически целиком повторяет функциональность компонента TQuery, так как в него включен специфический метод ExecSQL, с помощью которого компонент может выполнять предложения DDL языка SQL. Сам запрос формируется в свойстве SQL.
Единственным отличием компонента TADOQuery от его BDE-аналога является свойство, с помощью которого программист может узнать или указать максимальное количество обновлений, которое сделано (или разрешается сделать) при выполнении запроса:
property RowsAffected: integer;
Так же как компонент TQuery, компонентTADOQueryимеет свойствоDataSource, позволяющее передать параметры запроса от одного компонента другому.