базы данных в delphi

47
Базы данных в Delphi Принципы построения Компоненты Database Desktop

Upload: aeka227

Post on 17-Jan-2015

1.557 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: базы данных в Delphi

Базы данных в Delphi

Принципы построения Компоненты Database Desktop

Page 2: базы данных в Delphi

Основные понятия

База данных (понятие, виды) Банк данных Приложение баз данных СУБД (назначение, виды) Информационная система

Page 3: базы данных в Delphi

Виды СУБД

Персональные (локальные БД)Paradox, FoxPro, ASCII - файлы и др.

Многопользовательские (архитектура клиент-сервер)Oracle, MS SQL Server, InterBase

Page 4: базы данных в Delphi

Особенности Delphi как СУБД Создание и ведение локальных и клиент -

серверных БД Разработка приложений для любых БД Не имеет своего формата таблиц (языка

описания данных)

Page 5: базы данных в Delphi

Доступ к БД

BDE (Borland Database Engine – процессор баз данных Borland)

это совокупность динамических библиотек и драйверов доступа к данным.

BDE = API + драйвер БД

Page 6: базы данных в Delphi
Page 7: базы данных в Delphi

Архитектуры ИС

В зависимости от взаимного расположения приложения и БД:

локальные БД удаленные БД

(клиент – серверные приложения)

Page 8: базы данных в Delphi

Архитектуры ИС. Локальная архитектура. Однопользовательский режим.

Приложение BDE База данных

Page 9: базы данных в Delphi

Архитектуры ИС. Локальная архитектура. Многопользовательский режим.

ПриложениеBDE

Локальная копия базы данных

ПриложениеBDE

Локальная копия базы данных

База данных

Сервер сети

Page 10: базы данных в Delphi

Архитектуры ИС. Архитектура «клиент – сервер».

•Клиент – приложение пользователя.

•Запрос на языке SQL переправляется удаленным сервером к серверу баз данных.

•Вся обработка выполняется на удаленном сервере.

•Используются промышленные СУБД, например MS SQL Server.

•Такие БД требуют администрирования.

Page 11: базы данных в Delphi

Архитектуры ИС. Архитектура «клиент – сервер». Виды архитектур. Двухзвенная (двухуровневая) – «толстый клиент»

Приложение- клиент

BDE

SQL-Links

или ODBC

Сервер баз данных

База данных

Page 12: базы данных в Delphi

Архитектуры ИС. Архитектура «клиент – сервер». Виды архитектур. Трехзвенная (трехуровневая) – «тонкий клиент»

Приложение- клиент

Компьютер пользователя

BDE

SQL-Links

или ODBC

Сервер баз данных

База данных

Сервер приложений

Page 13: базы данных в Delphi

Реляционные базы данных.Требования к проектированию БД.? ?

?

? ??

??

Page 14: базы данных в Delphi

Средства для работы с базами данных

Инструментальные средстваспец программы и пакеты для обслуживания БД вне разрабатываемых приложений

Компоненты для создания приложений БД

Page 15: базы данных в Delphi

Инструментальные средства BDE BDE Administrator Database Desktop SQL Explorer SQL Builder SQL Monitor Data Pump IBConsole InterBase Server Manager SQL Links dbExpress InterBase Server

Самостоятельно!

Page 16: базы данных в Delphi

Компоненты

Невизуальные (для организации доступа к данным)

Визуальные (для управления данными)

Page 17: базы данных в Delphi

Компоненты

Для работы с SQL

Для управления данными с использованием BDE

Page 18: базы данных в Delphi

Компоненты

Для управления данными с использованием технологии ADO (Active Data Objects)

Для работы с сервером InterBase

Page 19: базы данных в Delphi

Компоненты

Для построения систем принятия решений

Page 20: базы данных в Delphi

Роль компонентовФайл базы данных на диске

TTable, Query

TDataSource

TDBGrid и другие воспринимающие данные

Интерфейс пользователя

Page 21: базы данных в Delphi

Класс TDataSet

Основой архитектуры доступа к наборам данных является базовый класс TDataSet

Он содержит абстрактное представление записей и полей набора данных: инкапсулирующий управление, навигацию манипулирование набором данных.

Page 22: базы данных в Delphi

Класс TDataSet

TDataSet

TDBDataSet

ТТаЫеTQuery

Page 23: базы данных в Delphi

Класс TQuery

набор данных, содержащий информацию, возвращенную в результате выполнения SQL-запроса

Page 24: базы данных в Delphi

Класс ТТаble

представляет структуру и данные, содержащиеся в таблице базы данных

знает, как обрабатывать индексы как применять специальные приемы,

связанные с поддержкой отношений двух таблиц типа один-ко-многим.

Page 25: базы данных в Delphi

Класс ТТаble

Основные свойства класса ТТаblе, унаследованные от TDataSet:

AutoCalcFields определяет, когда вызвано событие OnCalcField;

FieldDefs список имен полей из набора данных

Active определяет, открыт или нет набор данных

Page 26: базы данных в Delphi

Класс ТТаble

Свойство DatabaseName, унаследованное классом ТТаblе от TDBDataSet, определяет псевдоним базы данных, содержащей таблицу, либо имя каталога, в котором находятся файлы таблиц.

Page 27: базы данных в Delphi

Псевдоним

Псевдоним (Alias) — это короткое имя, поставленное в соответствие реальному, полному имени каталога базы данных.

Например, псевдонимом каталога C:\data\spetersburg может быть имя Peterburg.

Программа работы с базой данных для доступа к данным использует не реальное имя, а псевдоним.

Разрабатывая программу работы с базой данных, программист не может знать, на каком диске и в каком каталоге будут находиться файлы базы данных во время ее использования. Псевдоним – это решение проблемы передачи в программу информации о месте нахождения файлов базы данных.

Page 28: базы данных в Delphi

Псевдоним

Для доступа к информации программа, обеспечивающая работу с базой данных, подключает библиотеку Borland Database Engine (BDE), которая, в свою очередь, использует конфигурационный файл, содержащий информацию о всех зарегистрированных в системе псевдонимах.

Псевдоним должен быть зарегистрирован на конкретной машине, с которой будет производиться доступ к базе данных.

Псевдонимы баз данных и другие настройки BDE хранятся в файле idapi32.cfg, расположенном в том же каталоге, что и файлы BDE.

Page 29: базы данных в Delphi

Алгоритм создания псевдонима Запустить утилиту BDE Administrator Выполнить Object • New. В появившемся

окне выбрать драйвер для доступа к базе данных. Обычно надо оставить выбранным пункт STANDARD.

В правой части окна в качестве значения свойства Path указывается путь к базе данных.

Page 30: базы данных в Delphi

Основные свойства компонента ТТаblе, унаследованные от TBDEDataSet: Filter выражение для отбора данных Filtered значение True выполняет

фильтрацию данных в соответствии с выражением, определенным свойством Filtered

FilterOptions определяет, является ли фильтрование нечувствительным и разрешаются или нечастичные сравнения.

Page 31: базы данных в Delphi

Основные свойства компонента ТТаblе MasterSource определяет источник данных для связи с

другой таблицей DataSource выбирает источник данных Defaultlndex определяет, нужно ли сортировать данные в

таблице Exclusive определяет доступ к используемой таблице при

одновременном обращении к ней нескольких приложений IndexDefs содержит информацию об индексах таблицы IndexFieldNames составляет список индексов для таблицы IndexFields поля текущего индекса TableName таблицы, доступные в данной базе данных ТаbleТуре тип таблицы.

Page 32: базы данных в Delphi

Методы ТТаblе:

CreateTable создание таблицы Append добавление новой записи в конец таблицы Delete удаление записи, на которой стоит курсор DeleteTable удаление таблицы Edit перевод таблицы в режим редактирования записей FieldByName обращение к значению поля записи по имени FindFirst установка курсора на первую запись таблицы,

соответствующей условию отбора First установка курсора на первую запись таблицы Insert перевод таблицы в режим вставки новой записи Next перемещение курсора на следующую запись Post перевод таблицы в режим завершения редактирования.

Page 33: базы данных в Delphi

Схема связи компонентов Компонент таблица (Table) связывается с

физической базой на диске (имя файла базы (DataBaseName), имя таблицы из этой базы (TableName), база открыта для доступа (Active-True).

Компонент «Источник данных» (DataSource) связан с компонентом таблица (Table) через свойство DataSet.

Компоненты воспроизведения данных (страница DataControls) связаны с DataSource и/или с соответствующими полями таблицы базы данных

Page 34: базы данных в Delphi

Схема связиФайл базы данных на диске

TTable

TDataSource

TDBGrid и другие воспринимающие данные

Интерфейс пользователя

Page 35: базы данных в Delphi

Общий алгоритм установки связи приложения с БД1. Создать БД, сохранить ее в папке

проекта (во вложенной папке) и назначить ей псевдоним (при помощи BDE Administrator)

2. Разместить на форме компонент Table (страница BDE) компонент DataSource (страница DataAccess) компоненты для отображения данных

(страница DataControls), например DBGrid

Page 36: базы данных в Delphi

Общий алгоритм установки связи приложения с БД3. Настроить свойство DataSource компонентов

отображения данных = имя компонента DataSource

4. Настроить свойства компонента DataSource DataSet=имя компонента Table

5. Настроить свойства компонента Table (соблюдая последовательность!)

DataBaseName = псевдоним (или имя БД) TableName = имя таблицы БД Active = True (но лучше прописать его изменения в

событиях Create и Destroy для формы)

Page 37: базы данных в Delphi

Для навигации по таблице используется компонент DBNavigator со страницы DataControls

Page 38: базы данных в Delphi

Свойство Active компонента Table Чтобы грамотно оформить приложение, работающее с БД,

необходимо добавить соединение с набором данных в момент начала работы и разорвать его в момент окончания.

Для этого1. Создать обработчик события OnCreate формы:procedure TForml.FormCreate (Sender: TObject); begin Table1.Active := true end;2. Создать обработчик события OnDestroy формы:procedure TForml.FormDestroy(Sender: TObject); begin Table1.Active := false;end;

Page 39: базы данных в Delphi

Способы создания приложения для отображения данных из таблиц БД1 способ: компонент DBGrid.

2 способ: компоненты со страницы DataControl, позволяющие отображать данные не в таблице, а в отдельных полях на форме.

3 способ: использование редактора полей

Page 40: базы данных в Delphi

Редактирование набора данных Перед тем как изменять набор данных, следует узнать, возможно

ли его изменение при помощи свойства CanModify, которое принимает значение True, если набор данных может быть изменен.

Метод Edit переводит набор данных в состояние редактирования. Метод Post -для сохранения измененных данных. Метод Cancel возвращает набор данных в состояние, которое

было при последнем вызове метода Post. Метод Insert - для добавления новой записи по месту

расположения курсора. Метод Append – для добавления записи в конец набора данных. Метод Delete – удаление выбранной записи. Метод Clear Fields очищает поля выбранной записи.

Набор данных должен находиться в режиме ввода новой записи либо в режиме редактирования.

Page 41: базы данных в Delphi

Поиск записей и фильтрация в наборах данных Метод Locate используется для поиска информации в базе данных.

Он ищет первую запись, удовлетворяющую критерию поиска, и, если такая запись найдена, делает ее текущей. В случае удачного поиска метод возвращает True, в противном случае — False.

Пример использования Locatevar

LocateSuccess: Boolean;SearchOptions: TLocateOptions:

beginSearchOptions ;- [loPartialKey];LocateSuccess := CustTab1e.Locate('Company, Vendor', VarArrayOf(['SightDiver','Point']), SearchOptions);

end;Сорокин стр. 47-50

Page 42: базы данных в Delphi

Поиск записей и фильтрация в наборах данных Метод Lookup находит запись, точно удовлетворяющую условиям

поиска. Этот метод не переводит курсор на найденную запись, но возвращает значения некоторых полей найденной записи в виде вариантного массива.

Пример использования Lookup. Поиск по нескольким полям

varLookupResults: Variant;

beginwith CustTable doLookupResults := LookupC'Company; City'. VarArrayOf(['Sight Diver'.'Christiansted']). 'Company; Addrl; Addr2; State; Zip1);

end:Сорокин стр. 47-50

Page 43: базы данных в Delphi

Поиск записей и фильтрация в наборах данныхСвойство Filter позволяет задать критерии фильтрации. Набор данных

будет отфильтрован, как только его свойство Filtered примет значение True.

В условие фильтрации можно включать логические операторы and, or, not,

<>i <t >( <=, >=.Событие OnFilterRecord возникает, когда в свойстве Filtered

устанавливается значение True. Метод-обработчик события TFilterRecordEvent имеет два параметра. В параметре DataSet передается фильтруемый набор данных, а в параметре Accept — переменная, в которую помещается значение True в случае, если текущая запись соответствует условиям фильтрации.

Сорокин стр. 47-50

Page 44: базы данных в Delphi

Создание баз данных с помощью Database Desktop

Page 45: базы данных в Delphi

DataBase Desktop -- это программа-утилита, являющаяся своеобразным текстовым редактором для таблиц баз данных.

Она позволяет создавать, редактировать и изменять структуру таблиц баз данных.

Page 46: базы данных в Delphi

Алгоритм работы в Database Desktop Задать рабочий каталог - Object • Working Directory и из списка

Aliases выбрать псевдоним. Таким образом, при открытии диалога выбора таблиц (для локальных баз данных) будет открываться именно тот каталог, в котором они располагаются.

Для создания таблицы необходимо выбрать пункт меню Object • New • Table.

Создать и настроить поля Настроить ограничения для полей:

Required Field указывает, что поле должно быть обязательно заполнено данными.

Ограничение Minimum Value определяет минимальное значение, которое может содержаться в поле.

Maximum Value задает максимальное значение, которое может содержаться в поле.

Параметр Default Value определяет значение, которое поле будет принимать по умолчанию.

Параметр Picture определяет шаблон значений, которые будут храниться в поле.

Page 47: базы данных в Delphi

Алгоритм работы в Database Desktop Выбрать языковый драйвер для того, чтобы русский текст отображался

в базе данных без искажений - в списке Table properties выбрать пункт Table Language, нажать кнопку Modify и выбрать в появившемся списке значение Pdox ANSY Cyrillic.

Сохранить таблицу можно при помощи кнопки Save/Save As. Если требуется создать индекс по определенным полям. Для этого в

списке Table properties необходимо выбрать значение Secondary Indexes и нажать кнопку Define. Созданный индекс нужно сохранить.

Определить ссылочную целостность (т.е. установить связи между таблицами).

Нужно открыть главную таблицу и выбрать пункт меню Table Restructure. Таблица откроется для внесения изменений. В списке Table properties нужно выбрать элемент Referential Integrity и нажать кнопку Define.

Затем установить связь. Если надо группа Update rule позволяет задавать правила модификации записей.