2.3 Приложения управления базами данных Если вы не чувствуете себя достаточно уверенно, чтобы сразу перейти к самостоятельному программированию приложении СУБД в среде C++Builder, просмотрите готовые примеры, входящие в комплект поставки системы. Обратите внимание на методику адаптации приложении применительно к специфике ваших задач. Доступ к базам данных поддерживает его основа - высокопроизводительный механизм BDE (Borland Database Engine), включающий 32-разрядные драйверы для баз данных dBASE, Paradox; Sybase, Oracle, DB2, Microsoft SQL Server, Informix, InterBase и Local Interbase. Кроме того C++Builder имеет быстродействующий механизм ODBC для связи с такими базами данных, как Excel, Access, FoxPro и Btrieve в архитектуре клиент/сервер. Поскольку в наших примерах используется только демонстрационная база данных BCDEMOS, удостоверьтесь предварительно, что ее локальный псевдоним (alias) установлен с помощью утилиты конфигурации BDE. Если вы располагаете другими источниками данных, укажите их. 2.3.1 Пример из существующего проекта Данный пример демонстрирует работу компонент доступа TDBGrid, TDBText, TDBImage, TDataSource, TTable и TDBMemo, а также - компоненты стандартного диалога TSaveDialog. Уже на стадии проектирования вы сможете просматривать соответствующую таблицу базы данных и с помощью линейки прокрутки компоненты сетки TDBGrid открывать "живые" факты из жизни обитателей моря. Чтобы начать работу с существующим проектом приложения, выполните следующие действия:
Рис. 2.14. Пример приложения, использующего существующий проект. Источник данных приложения определяется свойствами компоненты TTable: свойство DatabaseName указывает на базу данных BCDEMOS, а свойство TableName - на таблицу BIOLIFE. Если захотите, скомпилируйте и соберите этот пример. После запуска вы снова получите доступ к изображениям и описаниям рыб в установленной таблице базы данных (Рис. 2.15). Сохраните информацию о заинтересовавшей вас рыбе в виде текстового файла, открывая кнопкой Save стандартный диалог компоненты TSaveDialog. Кнопка Exit осуществляет выход из приложения. Рис. 2.15. Приложение FISH FACTS в работе. 2.3.2 Пример использования модулей данных Архитектура приложений C++Builder для баз данных основана на применении технологии RAD и объектно-ориентированного программирования как к пользовательскому интерфейсу, так и к бизнес-логике баз данных. Модули данных (Data Modules) поддерживают естественное отделение кодов бизнес-логики обработки данных и компонент пользовательского интерфейса, размещенных на форме. Объекты модулей данных, доступные на этапе визуального проектирования и скрытые во время работы приложения, действуют как централизованный источник информации, который организует не только сам доступ к базам данных, но и бизнес-логику их обслуживания. Реализация различных способов доступа к элементам баз данных сосредоточена в компонентах вкладки Data Access Палитры компонент. Эти интерфейсные элементы заключают в себе такие характеристики источника информации, как спецификации конкретной базы данных, таблиц, запросов и ссылок к полям в некоторой записи. Использование модулей данных из Хранилища объектов дает вам возможность моментально адаптировать их к вашей задаче, перетаскивая нужные вам объекты и компоненты на форму создаваемого приложения. Изменения, внесенные вами в бизнес-логику конкретного модуля данных или в интерфейсные компоненты, никак не отражаются на использовании того же модуля другими разработчиками. Чтобы создать на основе готового модуля приложение "Заказчики" с данными о заказчиках товара, производимого некоторой компанией, выполните следующие действия: => Выполните команду File | New из главного меню. => На вкладке Data Modules выберите значок Customer Data, а затем нажмите кнопку ОК. => Дважды щелкните мышью на таблице Customers модуля данных. Откроется список Customerdata->Customers полей таблицы заказчиков (Рис. 2.16). Рис. 2.16. Поля таблицы заказчиков Customers модуля данных Customer Data. => Удерживая нажатой клавишу Shift, выберите нужные вам поля из списка. => Перетащите выбранные поля и разместите их на форме. => Перетащите компоненту навигатора базы данных DBNavigator из вкладки Data Control Палитры и в ее свойстве DataSource укажите источник данных CustomerData->CustomerSource. Теперь вы сможете просматривать "живые" данные всех записей в таблице заказчиков уже на стадии проектирования формы приложения (Рис. 2.17). Для этого нажимайте кнопки со стрелками на панели, расположенной в верхней части списка полей таблицы заказчиков. С помощью Инспектора объектов модифицируйте по своему усмотрению свойства компонент полей (например, в свойствах Caption замените все названия на русскоязычные). Рис. 2.17. Форма приложения для доступа к таблице заказчиков. Когда вы скомпилируете и соберете приложение, вы увидите те же данные, что и на стадии проектирования. Теперь, пользуясь кнопками панели навигатора, вы сможете редактировать
данные - вставлять новые записи, вычеркивать ненужные, менять содержание
полей и т.д. Рис. 2.18 показывает результат введения в таблицу атрибутов
вымышленного отечественного заказчика (после нажатия кнопки "+").
2.3.3 Пример использования Мастера форм Прежде, чем начать работу с последним примером этой главы, просмотрите Словарь баз дачных (Database Dictionary), выполнив команду главного меню Database | Explorer (Проводник базы данных). Открывшееся окно словаря (Рис. 2.19) состоит из двух панелей. В древовидном перечне левой панели найдите таблицу базы данных, которую вы собираетесь связать с формой проектируемого приложения. Для разработки приложения "Моя записная книжка" я создал в Excel таблицу с именем NOTEBOOK. He беда, если вы не захотите построить собственную рабочую таблицу в рамках Excel, Access, Paradox или какой-нибудь другой системы - при изучении примера можно воспользоваться англоязычным прототипом CLIENTS из базы данных BCDEMOS. Описание выбранной таблицы представлено тремя вкладками правой панели. На вкладке Definition вы найдете характеристики таблицы (дата, время создания, тип). Вкладка Enter SQL позволяет вводить и редактировать команды на языке структурированных запросов SQL к таблицам базы данных, расположенных на локальном или удаленном сервере. Если вы вводите команды изменения данных таблицы INSERT, UPDATE или DELETE, убедитесь, что опция меню Options | Live Queries не выбрана. Чтобы выполнить текущую команду SQL, нажмите кнопку с изображением молнии справа от поля редактирования. Вкладка Data показывает текущее содержание таблицы: Рис. 2.19. Содержание таблицы NOTEBOOK а окне Проводника базы данных. Для использования Мастера форм при создании приложения выполните следующие действия: => С помощью команды Database | Form Wizard из главного меню вызовите Мастер форм, который проведет вас по диалоговым страницам характеристик создаваемой формы. => На первой странице (Рис. 2.20) укажите, что создаете простую форму на основе компонентных объектов таблицы базы данных (Create a form using TTable objects). Нажмите кнопку Next. Рис. 2.20. Первая страница диалога Мастера форм. => На второй странице (Рис. 2.21) найдите вашу собственную таблицу NOTEBOOK.DBF (или ее прототип CLIENTS.DBF) из базы данных с псевдонимом BCDEMOS, которая будет использоваться формой приложения. В данном примере обе таблицы хранятся в каталоге CAProgram Files\Borland\CBuilder\Examples\DATA. Нажмите кнопку Next. Рис. 2.21. Вторая страница диалога Мастера форм. => На третьей странице (Рис. 2.22) выберите нужные вашему приложению поля таблицы из списка Available Fields и нажатием кнопки ">" перенесите их в список Ordered Selected Fields. В данном примере выбраны 5 полей. Нажмите кнопку Next. Рис. 2.22. Третья страница диалога Мастера форм. => На четвертой странице (Рис. 2.23) задайте расположение выбранных полей на форме - вертикально. Нажмите кнопку Next. Рис. 2.23. Четвертая страница диалога Мастера форм. => На пятой странице (Рис. 2.24) задайте положение названий относительно полей - слева. Нажмите кнопку Next. Рис. 2.24. Пятая страница диалога Мастера форм. => На шестой странице (Рис. 2.25) можно дополнительно потребовать создать для формы новый модуль данных. Нажмите кнопку Finish, завершая разработку формы приложения базы данных под управлением Мастера форм. Рис. 2.25. Шестая страница диалога Мастера форм. Далее, как обычно, можно воспользоваться Инспектором объектов, чтобы адаптировать компоненты формы к более удобному для вас представлению (Рис. 2.26). Рис. 2.26. Форма приложения, созданная Мастером форм. Когда вы скомпилируете и соберете приложение, исходные данные таблицы появятся в том виде. как вы их видели в Словаре баз данных.
Рис. 2.28. Работа приложения базы данных с таблицей CLIENTS. В последнем примере Мастер форм проявил себя как чрезвычайно полезный для новичков и удобный в обращении встроенный инструмент C++Builder, который позволяет разработать полностью функциональное приложение базы данных буквально за несколько минут. Проектирование формы приложения, по существу, заключается в выборе опций, предлагаемых диалоговыми страницами Мастера форм. Мастер форм самостоятельно закладывает фундамент прототипа вашего приложения, вообще не прибегая к "ручному" программированию. Конечно, чтобы удовлетворить конкретным требованиям поставленной задачи, вам не обойтись без написания специфических кодов для обработки событий, ошибок и отображения данных в различных видах. 2.4 Итоги C++Builder для операционных систем Windows 95 и NT обеспечивает высокую скорость визуальной разработки методом перетаскивания компонент на форму приложения. Мы убедились в высокой продуктивности и гибкости повторно используемых компонент, в особенности - элементов пользовательского интерфейса с базами данных, что в сочетании с высокопроизводительными компилятором и загрузчиком действительно позволяет быстро переходить от начального прототипа приложения к работающей программе.
|