Лабораторная работа. 1. Методика создания приложений Введение
Скачать 62.15 Kb.
|
1. Методика создания приложений 1.1. Введение Средства работы с базами данных в Delphi можно разделить на две группы: Универсальные утилиты с развитым пользовательским интерфейсом (database Desktop, reportsmith, database Explorer). Компоненты Delphi для разработки автономных программ ведения баз данных. Универсальные утилиты представляют собой сильно упрощенные варианты обычных СУБД с весьма ограниченными возможностями. Поэтому их целесообразно использовать лишь в качестве вспомогательного инструмента, например, для создания или изменения структуры базы данных, отладки запросов и т.д. Мы будем рассматривать только новые специфичные для Delphi средства разработки на основе компонентов. В частности, рассмотрим общую методику разработки, использование компонентов доступа к базам данных и визуальных компонентов создания пользовательского интерфейса. Перед началом работы с БД необходимо убедиться, что на жесткий диск компьютера установлена библиотека BDE (Borland database Engine, процессор баз данных). Файлы BDE записываются программой установки Delphi. Расположение BDE регистрируется в реестре Windows. BDE реализован в виде динамически загружаемых библиотек (DLL). В BDE входят драйверы низкоуровневого доступа к файлам БД разных форматов, драйверы языковой поддержки, интерпретаторы SQL и др. Интерфейс, образуемый функциями BDE, известен под названием ID API. BDE является посредником между приложением и БД, освобождающим приложение (но не разработчика!) От необходимости знания деталей доступа к файлам, местонахождения файлов и даже отчасти от архитектуры БД. Конечную реализацию любых действий с БД берет на себя драйвер BDE. BDE поддерживает работу с файлами персональных СУБД Paradox (*.db), dbase-совместимых СУБД (*.dbf), и с файлами удаленных баз данных, расположенных на SQL-серверах interbase, Oracle, Informix и др. Архитектура BDE открыта и может быть дополнена новыми драйверами. К сожалению, BDE так до конца и не был отлажен разработчиками. В последней версии Delphi 5 технология BDE постепенно вытесняется (?). Появились компоненты на основе более универсальной технологии доступа к данным ADO фирмы Microsoft; для доступа к БД interbase создана отдельная специализированная линейка компонентов, использующих API этой СУБД (BDE для них не требуется). Однако эти новые возможности, не меняющие сути вопросов, мы рассматривать не будем, так как на момент написания пособия (январь 2000 г.) Delphi 5 еще не получила широкого распространения (возможно, по причине традиционно завышенных системных требований, RAM не меньше 64М и т.п.). При работе с BDE рекомендуется создавать алиасы. Алиас (Alias, псевдоним) - условное обозначение спецификации каталога, где находятся файлы БД. Например, при установке Delphi автоматически создается алиас DBDEMOS для обозначения каталога \DELPHI3\DEMOS\DATA\, где хранятся файлы демонстрационных и учебных баз данных. Рекомендуется в программах использовать именно алиасы, а не конкретные имена каталогов. В этом случае программы приобретают дополнительную гибкость: при изменении местоположения файлов нет необходимости переделывать программу, а достаточно переопределить псевдоним с помощью, например, утилиты DB Explorer. Все алиасы и другие параметры и настройки BDE регистрируются в конфигурационном файле idapi.cfg. Файл idapi.cfgдолжен находиться на общедоступном и открытом для записи сетевом или локальном диске. Отметим, что каждая таблица формата Paradox хранится в отдельном файле (*.db), все таблицы СУБД interbase хранятся в одном файле *.gdb. Дальнейшее изложение ориентировано на использование таблиц Paradox и interbase. Создание структуры таблицы и ее заполнение информацией может выполняться несколькими способами: специализированными СУБД типа Paradox или foxpro, поддерживающими требуемый формат данных, утилитами Data Base Desktop (DBD) или DB Explorer, с помощью компонентов Delphi. Необходимо учитывать, что DBD 1) плохо работает с кириллическими шрифтами и 2) не использует всех возможностей interbase. Поэтому основное назначение DBD - создание или изменение структуры локальных таблиц, индексов и других метаданных. Утилита DB Explorer (другое название SQL Explorer) свободна от этих недостатков и может применяться для ввода информации и отладки SQL-запросов. Особенно удобна она при работе с interbase, т.к. Позволяет создавать и изменять метаданные interbase, в том числе структуру таблиц. (Однако и у DB Explorer приготовлены «сюрпризы» для пользователя.) 1.2. Основные компоненты Любое приложение, работающее с БД, должно содержать в своем составе, как минимум, три компонента. Во-первых, компонент для связи с процессором баз данных и через него с физическими таблицами. Это может быть компонент ттаые (работа с таблицами БД), tquery(выполнение SQL-запросов к БД) или tstoredproc(выполнение хранимых на сервере БД процедур). Во-вторых, компонент tdatasource, соединяющий передаваемые компонентами ттаые или tqueryнаборы данных (таблицы и запросы) с визуальными компонентами пользовательского интерфейса. В-третьих, визуальные компоненты для создания такого интерфейса, отображающие наборы данных различными способами (в виде таблиц, экранных форм и др., по выбору пользователя). В простейшем случае используются три компонента ttable, tdatasourceи tdbgrid. Рассмотрим методику их использования. Компонент ttableописывает логическую виртуальную таблицу - образ физической таблицы (файла данных). Сейчас перечислим только основные, всегда используемые, свойства ttable, доступные через инспектор объектов: Databasename, тип String - содержит либо алиас базы данных, либо полную спецификацию каталога, где находятся файлы БД. Tablename: tfilename - имя таблицы. Эти два свойства предназначены для привязки ттаые к физической таблице через BDE. Name - имя экземпляра компонента в программе. По умолчанию имеет значение Table 1. Active, тип Boolean - установка Activeв Trueоткрывает таблицу и делает ее доступной для просмотра. По умолчанию - False. Важнейшие дополнительные_свойства: Indexname: String - имя активного вторичного индекса, Indexfieldnames: String- ключевое поле активного индекса. Примечания. Эти два свойства взаимоисключающи: для упорядочения таблицы сле дует указывать либо одно, либо другое. Если ни одно из них не указывать, то таблица будет автоматически упо рядочена по первичному индексу. В indexnameуказывается имя вторичного индекса, а в indexfieldnames - ключевые поля, как первичного, так и вторичного индексов. Если индекс является составным, то в свойстве indexfieldnamesпере числяются через точку с запятой поля, из которых он состоит. В инспекторе объектов значения свойства выбираются с помощью ком бинированного списка, в котором для каждой таблицы перечислены все доступные индексы. Mastersource: tdatasource- содержит имя компонента tdatasource, описывающего главную таблицу для данной таблицы. Masterfields: String - имя поля, по которому устанавливается связь с главной таблицей. Filter: String - логическое условие фильтрации записей при просмотре. Filtered: Boolean - установка в Trueактивизирует фильтр. Значение по умолчанию - False. После помещения компонентов на форме следует установить свойства объекта ттаые {databasenameи tablename), связывающих его с реальной таблицей. Следующий этап - связывание объекта tdatasourceс объектом ттаые. Для этого надо указать в его свойстве dataset: tdatasetимя (значение свойства Name) экземпляра ттаые. Задача компонента tdbgrid(«сетка данных») - отображение и редактирование данных на экране в табличном виде. Чтобы связать dbgridс данными, надо указать в его свойстве datasourceимя компонента tdatasource, через который передаются данные. Благодаря использованию компонента tdatasourceкомпонент tdbgridстановится более специализированным, а следовательно, более простым и удобным. Его задача - только визуальное представление данных. Tdbgridне зависит ни от формата файлов, ни от имени конкретной таблицы (его «знает» Table), ни от конкретного типа набора данных - таблицы или запроса. Лабораторная работа № 1. Создание простой формы БД. Простая форма используется для работы с одной таблицей. Откройте новый проект с пустой формой. Разместите на форме компоненты ттаые и tdatasource. Их можно найти на странице Data Access палитры компонентов. Это - невизуальные компоненты: на форме они изобразятся в виде пиктограмм, а во время выполнения видны не будут. Выберите компонент Table 1 и откройте список псевдонимов в свойстве databasename. Установите псевдоним dbdemos. Введите имя таблицы tablenameиз dbdemos. Если псевдоним был за дан правильно, то в списке возможных значений свойства tablenameпоявятся имена всех таблиц из данного каталога. Выберите нужную, например, country.db(статистические данные о государствах американского континента). Выберите компонент datasource 1. Свяжите его с Table1, указав имя Та- blelв свойстве dataset. Разместите компонент tdbgrid(страница Data Control палитры компо нентов). Свяжите его с datasourcel, указав имя datasourcelв свойстве Data- Source. Правильность связывания компонентов проверьте по рис.1. Установите свойство Activeобъекта Table 1 в True. Таблица откроется и ее содержимое отобразится в сетке данных (dbgrid). Откомпилируйте и выполните приложение. Установите Activeв False, а в обработчик события создания формы Оп- Createвставьте Tablel.Open. Теперь таблица откроется только во время выпол нения приложения. Чтобы это проверить, повторите шаг 8. Часто бывает удобно просматривать и редактировать таблицу в виде нескольких строк, каждая из которых отображает одно поле текущей записи. Для этой цели предназначен компонент tdbedit(страница Data Control). На форме следует разместить столько объектов tdbedit, сколько полей Вы хотите просматривать. Экземпляр связывается с полем с помощью двух свойств: Data-Source(здесь указывается экземпляр объекта-источника данных) и datafield(указывается имя просматриваемого поля). Для отображения графических полей (типа Graphics, Blob) и текстовых полей (типа Memo) представлены визуальные компоненты tdbimageи tdbmemo, соответственно. Перемещение по записям таблицы удобно организовать с помощью компонента tdbnavigator. Внешний вид этого визуального компонента напоминает панель управления плеера. В частности, здесь присутствуют кнопки перехода на следующую и предыдущую записи, на первую и последнюю записи, вставки новой записи и др. Все названные компоненты связываются с набором данных через свои свойства datasourceи datafield. |