Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

GOSY / 1 блок-все-шпора(печать)

.pdf
Скачиваний:
37
Добавлен:
09.05.2015
Размер:
1.57 Mб
Скачать

13. Организация работы с БД в среде Delphi. Подключение, просмотр и редактирование БД.

Реляционная БД – БД состоящая из таблиц представляющих собой двумерные массивы.

Базы данных, между отдельными таблицами которых существуют связи, называются реляционными (от relationсвязь отношение). Связанные отношениями таблицы взаимодействуют по принципу главная-детальная (родительская-дочерняя). Одна и та же таблица может быть главной по отношению к одной таблице БД и дочерней по отношению к другой.

Таблицы сохраняются в базе данных. Некоторые СУБД сохраняют базу данных в виде нескольких отдельных файлов, представляющих собой таблицы (в основном, все локальные СУБД), в то время как другие состоят из одного файла, который содержит в себе все таблицы и индексы (InterBase). Например,

таблицы dBase и Paradox всегда сохраняются в отдельных файлах на диске. Директорий, содержащий dBase .DBF файлы или Paradox .DB файлы, рассматривается как база данных. Другими словами, любой директорий, содержащий файлы в формате Paradox или dBase, рассматривается Delphi как единая база данных. Для переключения на другую базу данных нужно просто переключиться на другой директорий. Как уже было указано выше, InterBase сохраняет все таблицы в одном файле, имеющем расширение .GDB, поэтому этот файл и есть база данных InterBase.(можно не писать)

Удобно не просто указывать путь доступа к таблицам базы данных, а использовать для этого некий заменитель - псевдоним, называемый алиасом. Он сохраняется в отдельном конфигурационном файле в произвольном месте на диске и позволяет исключить из программы прямое указание пути доступа к базе данных. Такой подход дает возможность располагать данные в любом месте, не перекомпилируя при этом программу. Кроме пути доступа, в алиасе указываются тип базы данных, языковый драйвер и много другой управляющей информации. Поэтому использование алиасов позволяет легко переходить от локальных баз данных к SQL-серверным базам (естественно, при выполнении требований разделения приложения на клиентскую и серверную части).

В Delphi развиты средства построения приложений, рассчитанных на работу с электронными архивами (базами данных). Причѐм Delphi предоставляет программисту возможность выбора способа доступа к данным: это может быть стандартный для ранних версий Delphi доступ с помощью машины баз данных

BDE(Borland Database Engine), усиленно развиваемая Microsoft технология

ADO(Active X Data Objects), прямое управление сервером Inter

Base с

помощью технологии IBExpress, наконец, технология dbExpress

для

непосредственного обращения к промышленным серверам MySQL, DB2, Oracle и некоторым другим.

Table

91

Компонент Table представляет всю таблицу базы данных. Свойства компонента:

Name Имя компонента. Используется для доступа к свойствам компонента DatabaseName Имя базы данных, частью которой является таблица(файл

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

TableName Имя файла данных (таблицы данных), для доступа к которому используется компонент

TableType Тип таблицы. Таблица может быть набором данных в формате

Paradox (ttParadox), dBase (ttDBase),FoxPro (ttFoxPro) или представлять собой форматированный текстовый файл (ttASCii)

Active Признак того, что таблица активна (файл данных открыт). В результате присваивания свойству значения True происходит открытие файла таблицы

Основные методы класса Table(редактирования):

Delete - Удаление текущей записи и перемещение указателя к следующей записи набора

Insert – Добавление новой пустой записи в набор данных. Ее позиция обычно определяется позицией указателя, но может зависеть и от конкретной СУБД

Post – Запись внесенных изменений в базу данных Delettable – Удаление таблицы.

Emptytable – Удаление всех записей из таблицы Основные методы класса Table(навигации): Next – переход к след-й записи

Prior – переход к пред-й записи First – переход к первой записи Last - переход к последней записи

DataSource

Компонент DataSource обеспечивает связь между данными, представленными компонентом таЫе или Query и Компонентами Отображения даННЫХ

(DBEdit, DBMemo, DBGrid). Свойства компонента:.

Name Имя компонента. Используется компонентом отображения данных для доступа к компоненту и, следовательно,к данным, связь с которыми обеспечивает компонент

DataSet Компонент, представляющий собой входные данные(Table ИЛИ

Query)

DBGrid

Компонент DBGrid используется для просмотра и ре дактирования базы данных в режиме таблицы. Свойства компонента:

Name Имя компонента

DataSource Источник отображаемых в таблице данных (компонент

DataSource)

92

Columns Свойство columns представляет собой массив компонентов типа Column, каждый из которых определяет колонку таблицы и отображаемую в ней информацию

Options.dgTitles Разрешает вывод строки заголовка столбцов Options.dglndicator Разрешает вывод колонки индикатора. Вовремя работы с

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

Options.dgColumnResize Разрешает менять во время работы программы ширину колонок таблицы

Options.dgColLines Разрешает выводить линии, разделяющие колонки таблицы

Options.dgRowLines Разрешает выводить линии, разделяющие строки таблицы

DBNavigator

Компонент DBNavigator обеспечивает перемещение указателя текущей записи, активизацию режима редактирования, добавление и удаление записей. Компонент представляет собой совокупность командных кнопок. Свойства компонента

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

источника данных может выступать база данных (компонент Database),таблица (компонент Table) или результат выполнения запроса (компонент Query)

VisibleButtons Видимые командные кнопки

Подключение, просмотр и редактирование. Для реал-ии режима просмотра главной таблицы используют компонент TDBGrid. Необходимо разместить TDBGrid на форме и указать источник данных после чего с помощью редактора столбцов определить список столбцов(т.е подключаем БД). Добавив навигатор (компонент TDBNavigator) мы получим возможность быстрого перемещения по таблице, редактирование раннее введѐнных значений и их удаление.

next устанавливает курсор на следующую запись prior устанавливает курсор на предыдущую запись first устанавливает курсор на первую запись

last устанавливает курсор на последнюю запись delete – удаляет текущую запись

insert – переводит набор данных в режим вставки новой записи createtable – создает новую таблицу

deletetable – удаляет таблицу

emptytable – удаляет все записи из таблицы

post – запоминает изменения, сделанные в текущей записи

Фильтры базы данных. Создание и подключение фильтра, свойства класса

Ttable – Filter, Filtred.

93

Свойство Filter задает критерий фильтрации. В этом случае набор данных будет отфильтрован, как только в его свойство Filtered будет помещено значение true.

Редакторфильтров

Типы искомых файлов, появляющиеся в диалоге в выпадающем списке Тип файла, задаются свойством Filter. В процессе проектирования это свойство проще всего задать с помощью редактора фильтров, который вызывается нажатием кнопки с многоточием около имени этого свойства в Инспекторе Объектов. В его левой панели Filter Name вы записываете тот текст, который увидит пользователь в выпадающем списке Тип файла диалога. А в правой панели Filter записываются разделенные точками с запятой шаблоны фильтра. В примере рис. задано два фильтра: текстовых файлов с расширениями .txt и

.doc и любых файлов с шаблоном *.*.

После выхода из окна редактирования фильтров заданные вами шаблоны появятся в свойстве Filter в виде строки вида:

текстовые (*.txt, *.doc)|*.txt; *.doc|все файлы|*.*

В этой строке тексты и шаблоны разделяются вертикальными линиями. В аналогичном виде, если требуется, можно задавать свойство Filter программно во время выполнения приложения.

Свойство FilterIndex определяет номер фильтра, который будет по умолчанию показан пользователю в момент открытия диалога. Например, значение FilterIndex = 1 задает по умолчанию первый фильтр.

94

14. Разработка и модификация структуры базы данных, настройка

BDE с помощью системы Database Desktop.

Cущность BDE. Мощность и гибкость Delphi при работе с базами данных основана на низкоуровневом ядре - процессоре баз данных Borland Database Engine (BDE). Его интерфейс с прикладными программами называется

Integrated Database Application Programming Interface (IDAPI). В принципе,

сейчас не различают эти два названия (BDE и IDAPI) и считают их синонимами. BDE позволяет осуществлять доступ к данным как с использованием традиционного record-ориентированного (навигационного) подхода, так и с использованием set-ориентированного подхода, используемого в SQL-серверах баз данных. Кроме BDE, Delphi позволяет осуществлять доступ к базам данных, используя технологию (и,

соответственно, драйверы) Open DataBase Connectivity (ODBC) фирмы

Microsoft. Но, как показывает практика, производительность систем с использованием BDE гораздо выше, чем оных при использовании ODBC. ODBC драйвера работают через специальный ―ODBC socket‖, который позволяет встраивать их в BDE.

Все инструментальные средства баз данных Borland - Paradox, dBase, Database Desktop - используют BDE. Все особенности, имеющиеся в Paradox или dBase, ―наследуются‖ BDE, и поэтому этими же особенностями обладает и Delphi.

Создание таблицы: для каждого поля создаваемой таблицы прежде всего указывают имя (Field Name) – идентификатор поля. Он может включать до 25 символов и не может начинаться с пробела. Затем надо выбрать тип (Type) данных этого поля. Для этого нужно перейти в раздел Type поля и щѐлкнуть правой кнопкой мыши. Появится список доступных типов, из которого можно выбрать необходимый. Например, строковое поле, короткие целые числа, дата, время и т.д.

Для некоторых типов необх. Задавать размер (size) – число символов. Ключевые поля должны быть отмечены символом "*" в последней колонке.

Database Desktop – это утилита, которая поставляется вместе с Delphi для интерактивной работы с таблицами различных форматов локальных баз данных – Paradox и dBase, а также SQL-серверных баз данных InterBase, Oracle, Informix, Sybase (с использованием SQL Links). Исполняемый файл утилиты называется DBD.EXE, расположен он, как правило, в директории, называемом DBD (при установке по умолчанию). Database Desktop запускается двойным щелчком по иконке.

Для создания новой таблицы используется команда File|New|Table. В диалоговом окне выбора типа таблицы можно выбрать любой формат из предложенного, включая различные версии одного и того же формата.

После выбора типа таблицы открывается диалоговое окно, специфичное для каждого формата, в котором можно определить поля таблицы и их тип.

95

Имя поля в таблице формата Paradox представляет собой строку, написание которой подчиняется следующим правилам:

Имя должно быть не длиннее 25 символов.

Имя не должно начинаться с пробела, однако может содержать пробелы. Однако, если Вы предполагаете в будущем переносить базу данных в другие форматы, разумнее будет избегать включения пробелов в название поля. Фактически, в целях переносимости лучше ограничиться девятью символами в названии поля, не включая в него пробелы.

Имя не должно содержать квадратные, круглые или фигурные скобки [], () или {}, тире, а также комбинацию символов ―тире‖ и ―больше‖ (-,>).

Имя не должно быть только символом #, хотя этот символ может присутствовать в имени среди других символов. Хотя Paradox поддерживает точку (.) в названии поля, лучше ее избегать, поскольку точка зарезервирована

вDelphi для других целей.

Следующий (после выбора имени поля) шаг состоит в задании типа поля. Типы полей очень сильно различаются друг от друга, в зависимости от формата таблицы. Для получения списка типов полей необходимо перейти к столбцу ―Type‖ и нажать пробел или щелкнуть правой кнопкой мышки.

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

После создания таблицы, с ней можно связать некоторые свойства, перечень которых зависит от формата таблицы (этот перечень находится в верхнем правом углу, рис. 2). Так, для таблиц формата Paradox можно задать:

* Validity Checks (проверка правильности) - относится к полю записи и определяет следующие парметры:

1.Required Field – задает обязательность заполнения выбранного поля;

2.Minimum value – определяет минимальное значение поля;

3.Maximum value - максимальное значение поля;

4.Default value – определяет значение поля по умолчанию;

5.Picture – определяет шаблон изображения поля (маску);

* Table Lookup (таблица для ―подсматривания‖) - позволяет вводить значение в таблицу, используя уже существующее значение в другой таблице

* Secondary Indexes (вторичные индексы) – разрешают доступ к данным в порядке, отличном от порядка, задаваемого первичным ключом

* Referential Integrity (ссылочная целостность) - позволяет задать связи между таблицами и поддерживать эти связи на уровне ядра. Обычно задается после создания всех таблиц в базе данных

* Password Security (парольная защита) – позволяет закрыть таблицу паролем

96

* Table Language (язык таблицы) – позволяет задать для таблицы языковый драйвер.

Определения дополнительных свойств таблиц всех форматов доступны через кнопку ―Define‖ в правой верхней части окна (группа Table Properties).

Например, чтобы создать индекс необходимо выбрать его в списке и нажать кнопку ―Define‖. В появившемся диалоговом окне в поле Fields содержится список полей определяемой таблицы. Поле Index Fields предназначено для хранения полей, входящих в индекс. Чтобы скопировать конкретное поле из списка Fields в список Index Fields, нужно нажать кнопку с изображением правой стрелки. Последовательность добавления полей в список важна, она определяет порядок чередования полей в списке.

Далее необходимо ввести имя индекса и нажать ОК.

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

После добавления нового индекса его имя появится в списке индексов. Впоследствии, щелкнув по имени индекса, его можно удалить (кнопка Erase)

или изменить (кнопка Modify).

Причем, все эти действия можно проделывать не только при создании таблицы, но и тогда, когда она уже существует. Для этого используется команда Table|Restructure Table (для открытой в данный момент таблицы) или Utilities|Restructure (с возможностью выбора таблицы).

Удобно не просто указывать путь доступа к таблицам базы данных, а использовать для этого некий заменитель - псевдоним, называемый алиасом. Он сохраняется в отдельном конфигурационном файле в произвольном месте на диске и позволяет исключить из программы прямое указание пути доступа к базе данных. Такой подход дает возможность располагать данные в любом месте, не перекомпилируя при этом программу. Кроме пути доступа, в алиасе указываются тип базы данных, языковый драйвер и много другой управляющей информации. Поэтому использование алиасов позволяет легко переходить от локальных баз данных к SQL-серверным базам (естественно, при выполнении требований разделения приложения на клиентскую и серверную части).

Для этого существует команда главного меню Tools Alias Manager. Появится окно создания псевдонима. Чтобы создать новый псевдоним необходимо нажать кнопку New. Затем в окошке Database alias ввести имя базы данных с которой необходимо будет работать при создании приложения. Затем с помощью кнопки Browse указать путь к папке, где хранятся таблицы БД и нажать кнопку OK. При следующем запросе нажать YES.

Главное окно утилиты настройки BDE имеет вид, изображенный на рис.1. Для создания алиаса выберите страничку "Aliases" и нажмите кнопку "New Alias". В появившемся диалоговом окне введите имя алиаса и выберите его

97

тип (тип базы данных) из выпадающего списка. Тип алиаса может быть стандартным (STANDARD) для работы с локальными базами в формате dBase или Paradox или соответствовать наименованию SQL-сервера (InterBase, Sybase, Informix, Oracle и т.д.).Сущность BDE

Мощность и гибкость Delphi при работе с базами данных основана на низкоуровневом ядре - процессоре баз данных Borland Database Engine (BDE). Его интерфейс с прикладными программами называется Integrated Database Application Programming Interface (IDAPI). В принципе, сейчас не различают эти два названия (BDE и IDAPI) и считают их синонимами. BDE позволяет осуществлять доступ к данным как с использованием традиционного recordориентированного (навигационного) подхода, так и с использованием setориентированного подхода, используемого в SQL-серверах баз данных. Кроме BDE, Delphi позволяет осуществлять доступ к базам данных, используя технологию (и, соответственно, драйверы) Open DataBase Connectivity (ODBC)

фирмы Microsoft. Но, как показывает практика, производительность систем с использованием BDE гораздо выше, чем оных при использовании ODBC. ODBC драйвера работают через специальный ―ODBC socket‖, который позволяет встраивать их в BDE.

Все инструментальные средства баз данных Borland - Paradox, dBase, Database Desktop - используют BDE. Все особенности, имеющиеся в Paradox или dBase, ―наследуются‖ BDE, и поэтому этими же особенностями обладает и Delphi.

Алиасы

Таблицы сохраняются в базе данных. Некоторые СУБД сохраняют базу данных в виде нескольких отдельных файлов, представляющих собой таблицы (в основном, все локальные СУБД), в то время как другие состоят из одного файла, который содержит в себе все таблицы и индексы (InterBase). Например, таблицы dBase и Paradox всегда сохраняются в отдельных файлах на диске. Директорий, содержащий dBase .DBF файлы или Paradox .DB файлы, рассматривается как база данных. Другими словами, любой директорий, содержащий файлы в формате Paradox или dBase, рассматривается Delphi как единая база данных. Для переключения на другую базу данных нужно просто переключиться на другой директорий. Как уже было указано выше, InterBase сохраняет все таблицы в одном файле, имеющем расширение .GDB, поэтому этот файл и есть база данных InterBase.

Удобно не просто указывать путь доступа к таблицам базы данных, а использовать для этого некий заменитель - псевдоним, называемый алиасом. Он сохраняется в отдельном конфигурационном файле в произвольном месте на диске и позволяет исключить из программы прямое указание пути доступа к базе данных. Такой подход дает возможность располагать данные в любом месте, не перекомпилируя при этом программу. Кроме пути доступа, в алиасе указываются тип базы данных, языковый драйвер и много другой управляющей информации. Поэтому использование алиасов позволяет легко

98

переходить от локальных баз данных к SQL-серверным базам (естественно, при выполнении требований разделения приложения на клиентскую и серверную части).

Для создания алиаса запустите утилиту конфигурации BDE (программу BDECFG.EXE), находящуюся в директории, в котором располагаются динамические библиотеки BDE.

Главное окно утилиты настройки BDE имеет вид, изображенный на рис.1. Для создания алиаса выберите страничку "Aliases" и нажмите кнопку "New Alias". В появившемся диалоговом окне введите имя алиаса и выберите его тип (тип базы данных) из выпадающего списка. Тип алиаса может быть стандартным (STANDARD) для работы с локальными базами в формате dBase или Paradox или соответствовать наименованию SQL-сервера (InterBase, Sybase, Informix, Oracle и т.д.).

99

100

Соседние файлы в папке GOSY