    Глава 11 

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

    Дэвид Пауэл 

    Три главные утилиты, встроенные в Delphi, призваны помочь программистам в 
разработке приложений баз данных. Первая утилита. Database Explorer 
(Исследователь базы данных), поставляется со всеми версиями Delphi. Вторая 
утилита, Data Dictionary (Словарь данных), поставляется только с Professional- 
и Client/Server-версиями Delphi. Третья — SQL Monitor — используется для 
отладки приложений Client/Server. 

    Утилита Database Explorer 

    Утилита Database Explorer— это полноценный броузер баз данных, который 
позволяет просматривать и редактировать информацию базы данных. Информация 
представляется в виде дерева, почти так же, как в стандартной программе 
Windows Explorer (Проводник). 
    Утилита Database Explorer имеет разные функциональные возможности в 
зависимости от версии Delphi. В версии Desktop можно получить доступ лишь к 
локальным базам данных (таблицам Paradox и dBASE), а в версии Professional — 
как к локальным, так и к ODBCсовместимым базам данных и к базам данных сервера 
Local InterBase Server. А версия Client/Server утилиты Explorer имеет все 
функциональные возможности версии Professional, а также доступ к SQL-базам 
данных с помощью SQL Links. Имя "Explorer" в программном продукте 
'Client/Server было заменено на "SQL Explorer", чтобы отличать версию, 
обладающую возможностями, связанными с SQL, от стандартной версии. Все рисунки 
в этой главе были генерированы для Client/Server версии инструмента Explorer, 
чтобы показать все его возможности. 

    —— Утилита Database Explorer 

    ^   В этом разделе описывается, как ||к   использовать утилиту Database 
Explorer для проверки базы данных и выполнения операций с ней. 

    —— Утилита Data Dictionary 

    Здесь рассказывается, что такое Data Dictionary и как использовать этот 
инструмент для создания клиентской части бизнесправил для приложений базы данных. 

    —— Утилита SQL Monitor 

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

    283 


    Рис. 11.1. Утилита Database Explorer 

    Утилита Explorer имеет две главные панели (рис. 11.1). В левой панели 
можно увидеть графическое представление баз данных, которые распознаются 
системой BDE, и в этой главе мы будем называть ее панелью обзора. Правая 
панель, или панель информации, отображает различные виды информации в 
зависимости от выделенного элемента панели обзора. 

    Панель обзора 

    На панели обзора в виде дерева отображаются все псевдонимы, которые 
определены для системы Borland Database Engine (BDE). Стандартными базами 
являются DBDemos, DefaultDD и IBLocal (только для версий Professional и Client/Server). 

    Создание псевдонимов 

    Псевдоним можно создать, щелкнув правой кнопкой мыши в области панели 
обзора и выбрав команду New в контекстном меню. По этой команде будет выведено 
диалоговое окно, в котором можно выбрать тип драйвера для псевдонима. Система 
BDE автоматически распознает драйверы SQL Links и любые драйверы ODBC 2.0, 
установленные в вашей системе. После выбора драйвера на панели "инфор^ТГий" 
появляются значения -по умолчанию для параметров подключения, как показано на 
рис. 11.1. Здесь можно установить всю необходимую информацию для подключения к 
вашей базе данных. Для сохранения нового псевдонима щелкните правой кнопкой в 
панели обзора и выберите команду Apply или щелкните на кнопке Apply панели инструментов. 

    Регистрация в базе данных 

    Раскрыв базу данных в панели обзора, нужно при регистрации в базе данных, 
если она этого требует, задать имя пользователя и пароль (как для SQL-сервера 
или драйвера ODBC). После подключения к базе данных Explorer сообщит, что вы 
подключены к базе данных, с помощью ярко-зеленого прямоугольника вокруг значка 
базы данных рядом с псевдонимом. Обратите внимание, что на рис. 11.1 рамками 
выделены пиктограммы баз данных DBDemos и IBLocal. На цветном мониторе эти 
рамки появляются в виде прямоугольника ярко-зеленого цвета. Связь с базой 
данных будет разорвана, если завершить работу утилиты Explorer или выбрать 
псевдоним, щелкнуть на нем правой кнопкой мыши и выбрать команду Close в 
контекстном меню. 

    284 Часть III. Работа с базами данных 


    Просмотр информации базы данных 

    Когда с помощью Explorer вы раскрываете базу данных, появляется информация 
о базе данных, зависящая от вида базы данных. На рис. 11.1, например, можно 
увидеть, что в базе данных DBDemos содержатся только таблицы, а в базе данных 
IBLocal —домены, таблицы, взгляды, процедуры, функции, генераторы, исключения 
и BLOB-фильтры. 
    Раскрываемая с помощью Explorer локальная база данных выводится со всеми 
существующими в ней таблицами. Каждая таблица затем может быть раскрыта для 
просмотра всех ее атрибутов. На рис. 11.2 показано раскрытое изображение 
таблицы ORDERS . DB, которая является частью базы данных со стандартным 
псевдонимом DBDemos. При таком расширенном просмотре можно получить для данной 
таблицы информацию о различных полях, индексах, проверке достоверности данных, 
ссылочных ограничениях и т.д. Информация о каждом из этих элементов выводится 
на панели информации. 

    Рис. 11.2. Развернутое представление локальной таблицы 

    В табл. 11.1 показаны различные объекты баз данных, которые могут быть 
выведены на панели обзора в зависимости от типа подключения к базе данных. 
Утилита Explorer сохраняет информацию для каждого типа баз данных, к которому 
она может подключиться, в текстовом INI-файле DBX. DBI, в папке DELPHI 3\BIN. 

    Таблица 11.1. Доступные объекты баз данных для разных типов подключения 

    Тип подключения Объекты базы данных 

    dBASE, Paradox Таблицы 
    DB2 
    Типы данных, таблицы, взгляды, процедуры, пространство таблиц, псевдонимы, 
пакеты и функции 
    Informix Таблицы, взгляды, синонимы и процедуры 
    InterBase 
    Домены, таблицы, взгляды, процедуры, функции, генераторы, исключения и BLOB-фильтры 
    MS Access Таблицы 
    MS SQL 

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

    Глава 11. Инструменты для работы с базами данных 285 


    Окончание табл. 11.1 

    Тип подключения              Объекты базы данных 

    ODBC                        Таблицы и процедуры 
    Oracle                          Таблицы, взгляды, синонимы, выборочные 
снимки, кластеры, пространство таблиц, последовательности, процедуры, функции 
и пакеты 
    Sybase                         Типы данных, таблицы, взгляды, процедуры, 
стандартные значения, правила, подключения, группы, пользователи, сегменты и устройства 
    

    Рис. 11.3. Развернутое изображение таблицы LIBS 

    Как уже ранее упоминалось, раскрыв базу данных типа SQL-сервер, можно 
получить список всех объектов базы данных. Таблицы базы данных— один из этих 
объектов, и если раскрыть конкретный элемент объекта Tables, можно увидеть 
раскладку объектов соответствующей таблицы. На рис. 11.3 показано развернутое 
изображение таблицы PARTS, являющейся частью базы данных LIBS, на которую 
указывает псевдоним IBLocal. Как и в случае локальных таблиц, можно увидеть 
все столбцы, индексы и ссылочные ограничения в таблиц? Однако базы данных SQL 
имеют еще такие объекты, как первичный ключ, контрольные ограничения, 
уникальные ограничения и триггеры, которые также отображаются на панели. 

    Панель информации 

    Панель информации отображает информацию об элементах, выбранных в панели 
обзора. Панель информации разработана как страница управления и имеет четыре 
разные вкладки, которые выводятся в зависимости от типа объекта базы данных, 
который выбран на панели обзора. Эти вкладки называются Definition 
(Определения), Text (Текст), Data (Данные) и Enter SQL (Ввод SQL). 

    286                                     Часть III. Работа с базами данных 


    Вкладка Definition 

    Эта вкладка отображает физические характеристики элемента, выбранного на 
панели обзора. Отображаемая информация сильно отличается в зависимости от типа 
выбранного объекта. Как показано на рис. 11.1, если выбран псевдоним BDE 
(например, IBLOCAL), вкладка Definition отображает всю конфигурацию BDE для 
этого псевдонима. Если выбрано поле таблицы, то во вкладке Definition будет 
отображаться структура поля, как показано на рис. 11.2. 
    Большую часть информации, отображаемой во вкладке Definition, 
редактироваться нельзя. Реорганизация базы данных, таблиц и полей должна 
осуществляться^ во вкладке Enter SQL или с помощью 
программнБго"о?ё'спеченТ|я^'Предоставленного поставщиком. Информацию о 
BDE-к'онф'йгураций^ псевдонима можно редактировать, если эта база данных не 
подключена (другими словами, если нет зеленого прямоугольника на пиктограмме 
базы данных).                   '— 
    Элементы вкладки Definition, которые могут быть отредактированы, выводятся 
обыкновенным шрифтом (не полужирным), а элементы, которые нельзя 
редактировать, — полужирным шрифтом. 

    Вкладка Text 

    Эта вкладка доступна только для версии Client/Server Explorer. Если она 
выбрана, у базы данных запрашиваются метаданные на выбранные объекты. Эта 
информация преобразуется в сценарий SQL и выводится во вкладке Text. 
    Эту возможность удобно использовать при создании дублирующих структур 
существующих объектов. Нужно просто выбрать исходный объект, скопировать 
сценарий SQL из вкладки Text в буфер обмена, а затем вставить его во вкладку 
Enter SQL. 

    На рис. 11.3 показана вкладка Text для таблицы PARTS псевдонима IBLocal. 


    Вкладка Data 

    Вкладка Data доступна во всех версиях Explorer и позволяет просматривать и 
редактировать данные в выбранных таблицах. Эта информация выводится в сетке, 
но возможен вывод дополнительного окна для просмотра таких BLOBданных, как 
графические и Memo-данные. Чтобы открыть окно просмотра, выберите команду меню 
View^Blob Explorer или просто дважды щелкните на графическом или Memo-поле во 
вкладке Data. На рис. 11.4 показана вкладка Data с Blob-окном и открытой 
таблицей BIOLIFE . DB базы данных с псевдонимом DBDemos.asai. Expioiei 

    Рис. 11.4. С помощью Database Explorer выводятся реальные данные в Blob-окне 


    Глава 11. Инструменты для работы с базами данных 287 


    Вкладка Enter SQL 

    Вкладка Enter SQL доступна только в Developer- и Client/Server-версиях 
Delphi. Она позволяет выполнить оператор SQL для выбранной базы данных. В ней 
можно удалять и создавать таблицы, наделять их правами, создавать триггеры, 
создавать и выполнять хранимые процедуры и т.д. Для выполнения SQL-оператора 
просто наберите оператор в окне ввода и щелкните на кнопке Execute Query 
(кнопка с желтой молнией). 
    Если вы выполняете SQL-операторы, возвращающие набор, подобно оператору 
SELECT, Explorer выводит результирующий набор ниже области ввода запроса. 
Чтобы получить изменяемые результаты, необходимо выполнить команду 
Орtion^Query, в результате чего появится окно Query Options, в котором можно 
установить опцию Request live queries. 

    Рис. 11.5. Запрос изменяемых данных с помощью Database Explorer 

    Эта вкладка предоставляет идеальную среду тестирования при создании 
сложных запросов. Вы не только немедленно получаете результат, но и 
возможность с помощью панели просмотра быстро перемещаться к другим объектам 
базы данных для уточнения некоторых деталей, например имени поля и индекса. На 
рис. 11.5 показана вкладка Enter SQL, в которой содержится простой оператор 
SELECT для отбора данных из таблицы CUSTOMER базы данных IBLocal. 

    Утилита Data Dictionary 

    Утилита Data Dictionary (словарь данных) поставляется только с версиями 
Delphi Developer и Client/Server. Доступ к Data Dictionary можно получить 
через Database Explorer, выбрав вкладку Dictionary на панели просмотра. 
Инструмент Data Dictionary предоставляет возможность создавать клиентскую 
часть бизнес-правил для приложений базы данных. Большая часть бизнес-правил 
размещается на сервере, ноТнёкоторых случаях их"Желательно разместить на 
стороне1<лйёнта, например такие параметры, как отображение и редактируемое 
форматирование. На рис: 11.6 и П.7 показаны развернутые поля словаря Data 
Dictionary. Утилита Data Dictionary состоит из двух главных разделов: 
Databases и Attribute Sets. 

    288 Часть III. Работа с базами данных 


    Sf SQL Exploiei 

    Рис. 11.6. Утилита Data Dictionary с развернутыми полями таблицы 


    Раздел Databases 

    В разделе Databases содержится список всех BDE-псевдонимов, а 
следовательно, и баз данных, которые включены в Dictionary. По умолчанию Data 
Dictionary содержит псевдоним DBDemos. В текущий словарь можно добавить 
псевдонимы, определив элемент базы данных в панели просмотра, а затем выбрать 
команду Dictionary^lmport from Database. По этой команде будет открыто окно 
Import Database, в котором указывается BDE-псевдоним, включаемый в текущий словарь. 
    На рис. 11.7 показан объект базы данных, находящийся ниже уровня полей. 
Заметьте, что в панели информации Explorer отображается только вкладка 
Definition. Последним элементом поля вкладки Definition является Attribute 
Set. При выборе поле связывается с одним из определенных параметров Attribute 
Set. Обратите внимание, что на рис. 11.6 поле Discount таблицы ITEMS 
связывается с атрибутом Percent. 

    Раздел Attribute Sets 

    В разделе Attribute Sets содержится список всех определенных атрибутов 
(attributes) словаря. Атрибут— это информация, используемая для обработки 
полей: форматирование, минимальное и максимальное значения, выравнивание, 
точность и т.д. 
    Если несколько приложений выводит информацию об определенном поле одним и 
тем же образом, можно подготовить обработку этого поля в каждом приложении, а 
можно создать атрибут в словаре и связать его с соответствующим полем. 
Использование словаря облегчает обслуживание, если необходимо внести 
коррективы в обработку поля на глобальном уровне. 
    На рис. 11.7 показан раскрытый объект Percent раздела Attribute Sets. Во 
вкладке Definition панели информации отображается вся уникальная информация о 
выбранном атрибуте. Обратите внимание на последний элемент, называемый Based 
On. С его помощью можно использовать созданные атрибуты при создании новых 
точно так же, как выполняется наследование в объектно-ориентированном 
программировании. Поэтому лучше сначала создать^общие атрибуты, а затем 
уточнитьт. в" конкретных условиях. Например, атрибут TaxRate базируется на 
атрибуте Percent стандартного^ловаря. 

    Глава 11. Инструменты для работы с базами данных 289 
    10 Использование Delphi 3. Специальное издание 


    Рис. 11.7. Утилита Data Dictionary с развернутым атрибутом поля 

    Создание новых атрибутов с помощью утилиты Database Explorer 

    Новые атрибуты можно создать, не выходя из Database Explorer. Для этого 
достаточно выбрать объект раздела Attribute Sets панели просмотра, а затем 
щелкнуть йа^е^ГпрЗво^Гкнопкой мыши и выполнить команду Object^New. 
    При создании нового атрибута обычно устанавлйвают^сВОТстТЙ Alignment 
(выравнивание). Readonly (только для чтения). Required (обязательный) и 
Visible (видимый). Кроме того, можно определить свойство TControlClass, чтобы 
указать Delphi тип элемента управления, распознающего данные, при переносе 
поля с этим атрибутом из редактора полей в форму. 

    Создание и использование атрибутов в Delphi 

    Для создания установок атрибутов в Delphi можно воспользоваться 
компонентом TField, который добавляется к форме с помощью редактора полей. 
После определения всей информации для компонента TField откройте редактор 
полей (Fields Editor) и выберите соответствующее поле, затем щелкните правой 
кнопкой мыши в окне редактораТГвыберите команду Save attributes в контекстном 
меню.                    
    Установки атрибутов в Delphi можно связать с полем с помощью редактора 
полей. Щелкните правой кнопкой мыши в окне редактора и выполните команду 
Associate в контекстном меню. Устанавливаемая при этом связь не будет 
локальной, она становится частью Data Dictionary. 

    Утилита SQL Monitor 

    Утилита SQL Monitor входит только в поставку Delphi Client/Server и 
впервые была включена в Delphi 2.0. Это полезный инструмент для работы с 
серверными базами данных. Монитор позволяет отслеживать взаимодействие между 
системой BDE и библиотеками DLL клиента для вашей базы данных. Также можно 
контролировать транзакции, подключения к базе данных, запросы, выборки, 
отключения и т.д. Вам никогда не потребуются какие-то сведения о том, как 
Delphi взаимодействует с сервером, если работает монитор. 

    290 Часть III. Работа с базами данных 


    Использование утилиты Monitor 

    Утилита Monitor — это не только мощное, но и простое средство. Чтобы 
использовать монитор, нужно выполнить простую двушаговую процедуру: запустить 
программу SQL Monitor и выбрать клиента BDE, которого необходимо отслеживать. 
Для запуска программы SQL Monitor в среде Delphi IDE используются команды 
Database, SQL Monitor. Запуск можно осуществить, выбрав программу из папки 
Delphi 3.0. 
    После запуска программы и выбора команды меню Clients в меню Clients будет 
содержаться список всех клиентов, которые работают в данный момент. Вам 
необходимо выбрать клиента BDE (если работает несколько клиентов), которого вы 
хотите отслеживать. По умолчанию выбирается первый клиент списка. 

    Рис. 11.8. Утилита SQL Monitor 

    На рис. 11.8 показан SQL Monitor и результаты трассировки запроса, 
выполняемого в Explorer на рис. 11.5. Текущий оператор SELECT выделен в 
верхнем окне монитора. Нижнее окно отображает выбранную строку из верхнего 
окна. Это дает возможность просмотреть весь оператор, если он слишком длинный 
и не помещается в одной строке. 

    Опции трассировки 

    В мониторе есть несколько опций трассировки, с помощью которых 
устанавливают степень детализации трассировки. Результаты трассировки, 
показанные на рис. 11.8, были получены при включении всех опций. Такая 
трассировка более подробная, чем требуется, но она всегда может быть 
выполнена, если это необходимо. В табл. 11.2 приведено 11 опций трассировки, 
устанавливаемых в мониторе. Установку можно выполнить, щелкнув на кнопке Trace 
Options или выполнив команду Options^Trace Options. 

    Таблица 11.2. Опции трассировки утилиты SQL Monitor 

    Опция трассировки ^Описание 

    Prepared Query Statements Операторы для пересылки на сервер 
    Input Parameters Информация о параметрах для запросов с параметрами 
    Fetched Data Все данные, выбираемые с сервера 


    Глава 11. Инструменты для работы с базами данных 291 


    Опция трассировки	Описание 

    Executed Query Statements	Операторы для выполнения на сервере 
    Statement Options	Каждая выполненная операция, такая как ALLOCATE, 
PREPARE, EXECUTE и FETCH 
    Connect/Disconnect	Операции, связанные с подключением к базе данных и 
отключением от нее 
    Transactions	Операции, связанные с транзакциями 
    Blob 1/0	Операции с Blob-данными 
    Miscellaneous	Другие операции 
    Vendor Errors	Сообщения об ошибках, возвращаемых сервером. В сообщении 
могут содержаться коды ошибок, которые зависят от сервера 
    Vendor Calls	Вызовы API-функций направляются к библиотекам DLL клиента 


    Параметрические запросы 

    Благодаря утилите SQL Monitor параметрические запросы больше не являются 
тайной. В предыдущей версии монитора, которая поставлялась с Delphi 2.0, не 
было возможности отображать параметры в параметрических запросах. Новый 
монитор отображает вопросительный знак (?) в текущем операторе SELECT, но если 
вы посмотрите на несколько строк выше в журнале трассировки, то увидите, где 
параметр был инициализирован. 
    На рис. 11.9 показан журнал трассировки запроса с параметрами для простого 
приложения Delphi, которое отбирает всех заказчиков с номером, большим, чем 
значение некоторого параметра, как показано ниже: 

    select * from CUSTOMER where CUSTNO > :pl Этот параметр был определен для 
целого типа со значением 2000. 
    ISQLMomtoi 

    Рис. 11.9. Отображение информации о параметрическом запросе в SQL Monitor 


    292                                                Часть III. Работа с базами данных 


    Отладка приложений 

    Полезность этого инструмента для отладки приложений баз очевидна. Монитор 
можно использовать, если необходимо убедиться, что динамические запросы 
создаются корректно во время выполнения приложения. С помощью монитора можно 
также повысить эффективность запросов к базе данных. Если вы экспериментируете 
при решении проблемы времени, то Time Stamp (метка времени) в журнале 
трассировки поможет вам узнать, какие запросы отнимают больше всего времени. 
Из журнала трассировки можно также почерпнуть и другую полезную информацию, 
например узнать коды ошибок, которые возвращаются с сервера, но не передаются 
с помощью BDE вашему приложению.

    Резюме 

    В Delphi разработчикам приложений баз данных предоставляются три мощные 
утилиты. Освоив Database Explorer, Data Dictionary и SQL Monitor, вы получите 
возможность создавать и модифицировать таблицы, процедуры, триггеры, пакеты, 
индексы и т.д., создавать бизнес-правила клиента, а также отслеживать 
взаимодействие вашего приложения с библиотеками DLL клиента для баз данных. 
Эти утилиты могут стать постоянными и-незаменимыми вашими спутниками при 
отладке приложений баз данных. 

    Глава 11. Инструменты для работы с базами данных 293 
