Рис. 18.6. Окно Database Form Wizard.
Использование модуля данных.
При конструировании формы невизуальные компоненты, используемые для доступа к данным, такие как DataSource или Table, размещаются на форме, но при выполнении приложения эти компоненты не видны. Поэтому их можно размещать в любом удобном месте формы, выступающей для них контейнером – модулем. Кроме того, для размещения невизуальных компонентов, через которые осуществляется доступ к данным, предназначен специальный объект – модуль данных.
Существует три типа модуля данных:
простой модуль данных;
удаленный модуль данных;
Web–модуль.
Ниже рассматривается простой модуль данных, который представлен объектом DataModule. Использование удаленного модуля данных и Web–модуля рассматривается в разделах трехуровневые приложения и публикация БД в Интернете в книге Б. С. Послед «Borland C++ Builder 6. Разработка приложений баз данных».
Если применяется простой модуль данных, то взаимосвязь компонентов приложения и таблицы БД имеет вид, показанный на рис.18.7.
Рис.18.7. Модуль данных
Модуль данных, как и форма, является контейнером для своих невизуальных компонентов, и для него создается модуль кода с расширением С++. Добавление модуля данных к проекту выполняется командой File/New/DataModule главного меню С++ Builder. В окне модуля компоненты размещаются таким же образом, как и на форме. При выборе объекта в Инспекторе объектов отображаются его свойства, значения которых можно просматривать и изменять.
При обращении к содержащимся в модуле данных компонентам для них указывается составное имя, в которое, кроме имени компонента, входит также имя модуля данных. Составное имя имеет формат
<Имя модуля данных> -> <Имя компонента>
Ниже приводится пример кода, в котором осуществляется обращение к компонентам модуля данных.
void __fastcall TForm1::FormCreate(TObject *Sender)
{
DataModule2->Tablel->DatabaseName = “dbdemos”;
DataModule2->Tablel->TableName = “clients.dbf”;
DataModule2->DataSourcel->DataSet = DataModule2->Tablel;
DBGridl->DataSource = DataModule2->DataSourcel;
DBNavigatorl->DataSource = DataModule2->DataSourcel;
DataModule2->Tablel->Active = true;
}
Для компонентов выполняется установка значений свойств, связывающих между собой эти компоненты и таблицу БД. Значения свойств устанавливаются динамически в процессе выполнения приложения, для чего использован обработчик события создания главной формы приложения. В составных именах компонентов доступа к данным, которыми являются источник данных DataSourcel и набор данных Tablel, указывается имя модуля данных DataModule2.
Чтобы обеспечить возможность доступа к компонентам модуля данных в модуле формы, в список uses раздела implementation необходимо включить ссылку на модуль данных:
#include “unit2.cpp”;
Ссылку на другой модуль можно написать самостоятельно, но С++ Builder дает возможность вставить ее автоматически. При выборе команды File/Use Unit.
Помимо компонентов доступа к данным, которыми являются session, Database, Table, Query, storedProc, BatchMove и др., в модуле данных можно размещать также невизуальные компоненты, не имеющие прямого отношения к БД, например, ImageList, OpenDialog ИЛИ Timer.
При работе с модулем данных в Палитре компонентов доступны только невизуалные компоненты.
Модуль данных позволяет:
отделить управление БД от обработки данных;
создать модуль, совместно используемый несколькими приложениями.
Основным назначением модуля данных является централизованное хранение компонентов доступа к данным, а также кода для этих компонентов, в частности, обработчиков событий. В модуле данных удобно размещать код, выполняющий управление БД, например, реализацию бизнес–правил.
Использование простого модуля данных несколькими приложениями позволяет ускорить разработку приложений, т. к. готовый модуль данных впоследствии можно включать в новые приложения. Кроме того, управление БД через общий модуль дает возможность определить для всех пользователей одинаковые режимы и правила работы с базой, а также делает более простым изменение этих режимов и правил.
Однако для небольших приложений использование простого модуля данных не всегда оправдано, т. к. может затруднить, а не облегчить разработку приложения.
Ниже приведен порядок соединения СУБД ORACLE 10g с C++ builder 6.
Do'stlaringiz bilan baham: |