- •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. Описанный далее пример повторяет пример, рассмотренный в разделах2, 3и4.
Процесс создания проекта можно представить в виде последовательности из 6-тишагов.
Создание модуля данных
Начните новый проект и добавьте к нему модуль данных или создайте копию уже существующего проекта с BDE.
В случае нового проекта поместите в модуль данных компонент ADOConnetion,5компонентовADOTable(вкладкаADOпалитры компонентов) и два компонентаDataSource(вкладкаData Access).
Назовите таблицы ADOTableименамиtbNakls,tbMove, tbFirms, tbBooks, tbTypeNи свяжите источник данныхDataSource1с таблицейtbNakls, а источник данныхDataSource2- с таблицейtbMove(рисунок11.2).
В случае существующего проекта с BDEзамените в модуле данных компонентTDataBaseна компонентADOConnetion, а5компонентовTTableна5компонентовADOTable.
Результирующий вид модуля данных приведен на рисунке 10.2.
Рисунок 7.57 – Модуль данных и дерево объектов
Начало настройки связи
Установление связи с объектом ADO является ключевым моментом всей технологии. Каждый компонент НД имеет 2-а свойства, с помощью которых он может установить связь с объектом ADO:
Connection;
ConnectionString.
В свойство Connection помещается ссылка на специальный связной компонент ADOConnection, играющий роль концентратора соединения с объектом ADO. В свойство ConnectionString помещается собственно строка связи. Эти свойства взаимоисключающие, то есть установка значения в одно из них ведет к очистке второго.
Рассмотрим процесс настройки связи объектов ADOс соответствующим провайдером на примере компонентаADOConnection. Для отдельных компонентADOTableон полностью аналогичен.
Дважды щелкните на компоненте ADOConnection1или выделите егов окне инспектора объектов и щелкните на кнопке с многоточием в строке свойства ConnectionString, чтобы вызвать окно (рисунок 10.3) настройки связи (строки связи).
Рисунок 7.58 –Окно настройки связи
Строка связи несет в себе множество (не менее 2-х) параметров, отделенных друг от друга точкой с запятой. Собственно в технологии ADO используются лишь четыре из них, остальные нужны для идентификации пользователя при доступе к серверным БД и для настройки некоторых параметров ODBC-драйверов.
У программиста есть 2-е возможности установить связь:
Сослаться на специальный связной файл в первой строке;
Сформировать описание связи во второй.
В 1-ом случае можно использовать один и тот же файл сразу для нескольких соединений, поэтому изменение файла отразится на многочисленных связях, причем, возможно, не в одной программе.
Во 2-ом случае содержимое строки связи влияет только на соответствующий компонент-набор или только на те компоненты, которые будут ссылаться на данный связной компонент и только внутри одной программы.
Мы рассмотрим только 2-ой случай как более строгий.
Выбор провайдера
Выберите переключатель Use Connection String и щелкните на кнопке Build.
На экране появится диалоговое окно с 4-мя вкладками.
Вкладка Поставщикданных (рисунок10.4) используется для выбора механизма, который будет непосредственно взаимодействовать с данными, получая их от клиента и посылая их ему. Фактически в списке этой вкладки отображается состав провайдеровOLE DB, установленных на вашей машине.
Рисунок 7.59 –Настройка связи: выбор провайдера
Выбор провайдера является определяющим фактором. Для разных типов данных должны использоваться только строго определенные провайдеры.
В файл-серверных БДдолжен использоваться толькоMicrosoftOLE DBProviderforODBCdriverс предварительной настройкой соответствующего драйвера.
Примечание.ODBCдрайвер может работать не толко с файл-сервернымиБД. Так ранее нами он был использован для работы сБДPostgreSQL.
Для работы с БДPostgreSQLможно использоватьODBCдрайвер и провайдерMicrosoftOLE DBProviderforODBCdriver, но элегантнее обойтись безODBCи выбрать провайдерMicrosoftJet 4.0OLE DBProvider.
Если используется сервер OracleилиMSSQL Server,БДработает совместно соответственно с провайдеромMicrosoftOLE DBProviderforOracleилиMicrosoftOLE DBProviderforSQL Serverи т. д.
Некоторые типы данных (например, БДInterBaseилиInformixSQL Server) не имеютOLE DBпровайдеров и поэтому (пока не будут созданы нужные провайдеры) они непосредственно не могут использоваться в технологииADO, но этот недостаток устраняется, если для них существует соответствующий ODBCдрайвер.