Лабораторная работа №9-11 Тема




Скачать 219.06 Kb.
НазваниеЛабораторная работа №9-11 Тема
страница1/2
Дата публикации26.02.2014
Размер219.06 Kb.
ТипЛабораторная работа
uchebilka.ru > Бухгалтерия > Лабораторная работа
  1   2
Лабораторная работа № 9-11

Тема: Создание в программе CodeGear RAD Studio (C++Builder) клиентского приложения по технологии dbExpress для клиент-серверной СУБД MySQL.

Цель: Получить практические навыки работы c базами данных в среде для быстрой разработки приложений на C++.
ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
См. Электронный учебник А. Хомоненко, С. Ададурова «Работа с базами данных в C++Builder» (файл DataBase v C++Builder.djvu в папке с заданием на лабораторную работу) стр. 263-286.
Технология dbExpress. В основе технологии dbExpress лежит использование множества драйверов, компонентов, объединяющих соединения, транзакций, запросов и наборов данных, а так же интерфейсов, реализующих универсальный доступ к соответствующим функциям.

При ее использовании для доступа к данным используются SQL-запросы. Обладая легкой переносимостью, приложения нормально работают под управлением как Windows так и Linux. Для использования этой технологии достаточно подключить к приложению динамически подключаемою библиотеку с драйвером, взаимодействующим с клиентским программным обеспечением для нужного сервера базы данных, в частности, для MySQL (рис. _1). Библиотека libmysql.dll должна находиться либо в папке WINDOWS\System32, либо в папке с клиентским приложением.



Рис. _1. Схема доступа к данным с помощью dbExpress

По сравнению с использованием механизма BDE технология dbExpress обеспечивает построение более легковесных (по объему кода) приложений для работы с базами данных. К недостаткам технологии dbExpress можно отнести то, что она не поддерживает концепцию открытых таблиц и не содержит встроенную поддержку обновления данных, кроме способности выполнения запросов INSERT, DELETE и UPDATE.
^ ПОРЯДОК ВЫПОЛНЕНИЯ

Часть 1 – Создание соединения с сервером БД, размещение компонентов доступа к данным (набора данных), компонентов источников данных

  1. Запустить сервер MySQL 5.0.

  2. Проверить наличие личной базы данных по варианту в папке data на сервере.

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

  4. Проверить наличие библиотеки libmysql.dll в папке WINDOWS\System32 (при необходимости скопировать из папки MYSQL\BIN на сервере).

  5. Запустить программную среду CodeGear RAD Studio (C++Builder).

  6. Создать новый проект VCL Form Application – C++Builder.

  7. Вывести для удобства работы на экран Object Inspector и Tool Palett (пункт меню View).

  8. Добавить в проект модуль данных (File New Other… или New Items).



Рис. 1. Окно добавления в проект модуля данных

  1. Расположить на модуле данных с Палитры компонентов dbExpress и DataAccess необходимые компоненты: для установки соединения с сервером (компонент SQLConnection), для доступа к данным (набор данных) (компонент SimpleDataSet), источники данных (компонент DataSourse) и переименовать их согласно с названиями таблиц личной базы данных студента (свойство name в Object Inspector). Для варианта 30 (рис. 2).

ЗАМЕЧАНИЕ: Набор данных представляет собой совокупность записей, взятых из одной или нескольких таблиц БД. Компонент SimpleDataSet предназначен для редактирования набора данных (получения данных, их кэширования и отправления измененных данных на сервер). Компонент использует двунаправленный курсор и позволяет редактировать данные в режиме редактирования, исправляя основные недостатки технологии dbExpress.

И
сточник данных (компонент DataSourse) используется как промежуточное звено между набором данных и визуальными компонентами, с помощью которых пользователь управляет этим набором данных. Для указания набора данных, с которым связан источник данных, служит свойство DataSet последнего. Визуальные компоненты связаны с источником данных через свои свойства DataSourse.

Рис. 2. Пример для варианта 30 – БД Страхование

  1. Задать параметры подключения к серверу баз данных, выбрав предварительно следующие свойства компонента SQLConnection: выбрать драйвер СУБД, ввести имя базы данных согласно варианта, имя сервера (например, указать локальный сервер), имя пользователя и пароль, отображение букв русского алфавита (рис. 3).

ЗАМЕЧАНИЕ:

Для версии программы 2007 для задания настроек следует выбрать свойство Params и в появившемся окне ввести нужные данные. Строку с заданием отображения русских букв следует добавить самостоятельно.



Рис. 3. Настройки компонента SQLConnection для варианта 30

  1. Подключиться к серверу баз данных, установив свойство Connected в truе.

ЗАМЕЧАНИЕ: если появляется сообщение об ошибке нахождения библиотеки libmysql.dll, то, возможно, не скопирован файл libmysql.dll из папки с сервером в папку C:\WINDOWS\SYSTEM32. Возможно, версия библиотеки не соответствует версии среды программирования – необходимо подобрать файл библиотеки. Также может быть не запущен сервер, или не создан указанный пользователь.

  1. Компонентам SimpleDataSet выбрать в свойстве Connection созданное соединение. Включить активность компонентов SimpleDataSet (свойство Active).

  2. Выбрать для компонентов SimpleDataSet типы команд и в зависимости от выбранного типа (таблица, запрос или хранимая процедура) в свойстве CommandText выбрать нужную таблицу, хранимую процедуру или создать запрос на вывод записей из соответствующих таблиц, воспользовавшись диалоговым окном.

ЗАМЕЧАНИЕ: Если в свойстве CommandText не отображаются имена существующих таблиц или хранимых процедур, или не отображаются имена таблиц для формирования запроса, то следует проверить предыдущие настройки.



Рис. 4. Формирование запроса для таблицы ^ Filials

  1. Компоненты DataSource связать с компонентами SimpleDataSet, выбрав соответствующие значения в свойстве DataSet, а также включить активность (Рис. 5).



Рис. 5. Настройка компонента для варианта 30 на таблицу Filials

  1. Переименовать модуль данных, например, задав имя DM (свойство name в ObjectInspector).


Часть 2 – Создание формы приложения БД, размещение и настройка компонентов управления данными


  1. Подключить в форму модуль данных: #include "имя заголовочного файла"

ЗАМЕЧАНИЕ: для перехода между файлами проекта использовать кнопки панели инструментов Стандартная или соответствующие пункты меню View.


  1. Переименовать главную форму клиентского приложения (свойство Caption), задав ей соответствующее имя, например, для варианта 30 – Страховая компания.

  2. Расположить на форме компонент MainMenu (вкладка Standart на палитре компонентов) для создания меню формы.

  3. Задать пункты верхнего меню и подпункты. Справочниками будут выступать родительские таблицы (Рис. 6).



Рис. 6. Пункты верхнего меню для варианта 30

  1. Расположить на форме компонент ^ Image (вкладка Additional), указать имя файла рисунка (свойство Picture), предварительно рисунок скопировать в папку с проектом, задать ему выравнивание (свойство Align установить в alClient), растяжение (свойство Strech установить в true).

  2. Расположить на форме компонент PageControl (вкладка Win32) для создания вкладок, которые будут содержать данные таблиц БД. Задать объекту выравнивание по полному размеру формы (свойство Align установить в alClient).

  3. Создать вкладки по количеству таблиц, задать вкладкам имена (свойство Caption), соответствующие таблицам БД: например, для варианта 30 – Виды страхования, Филиалы и Договоры.

ЗАМЕЧАНИЕ: для создания вкладок достаточно вызвать контекстное меню (рис. 7).



Рис. 7. Пример создания вкладок для В30

  1. Задать жесткое разграничение рабочего поля на каждой вкладке главного окна формы, используя компоненты Panel (вкладка Standart) и Splitter (вкладка Additional).

ЗАМЕЧАНИЕ: рекомендуется выполнить следующие действия.

  1. активизировать любую из вкладок (объекты TabSheet1-3);

  2. добавить компонент Panel;

  3. задать выравнивание вверху вкладки (свойство Align установить в alTop);

  4. изменить вручную или с помощью свойств его высоту – высота объекта порядка 2/3 от высоты вкладки (Рис. 8 слева);

  5. выбрать компонент Splitter и щелкнуть на вкладке ниже панели – объект разместится вертикально (Рис. 8 справа);



Рис. 8. Создание фиксированных областей на вкладке – этап 1

  1. задать объекту Splitter1 выравнивание вверху свободной области на вкладке (свойство Align установить в alTop), толщину 1-2 (свойство Height) (Рис. 9 слева);

  2. расположить ниже объекта Splitter1 еще один компонент Panel и задать ему выравнивание по размеру свободной области на вкладке (свойство Align установить в alClient) (рис. 9 справа);



Рис. 9. Создание фиксированных областей на вкладке – этап 2

  1. выполнить аналогичные действия для остальных вкладок.




  1. Для вывода содержимого таблиц БД расположить вверху (верхняя панель) на каждой вкладке компонент ^ DBGrid (вкладка DataControls) и задать его выравнивание вверху панели (свойство Align установить в alTop), увеличить высоту объекта (3/4 высоты панели) (Рис. 10 слева).

ЗАМЕЧАНИЕ:

Визуальные компоненты для работы с данными расположены на странице DataControls Палитры компонентов и предназначены для построения интерфейсной части приложения. Они используются для навигации по набору данных, а также для отображения и редактирования записей. Свойство DataSource задает имя источника данных, который подключен к одному из наборов данных приложения.

Для отображения записей редактируемого набора данных и навигации по нему используются объекты DBGrid и DBNavigator соответственно. Для установления связи названных компонентов с компонентами SimpleDataSet используется компоненты DataSource. Для компонентов DataSource их свойствам DataSet устанавливается значение нужного SimpleDataSet1. Соответственно для каждого из компонентов DBGrid1 и DBNavigator1 их свойству задается значение соответствующего DataSource.


  1. Добавить на каждую вкладку компонент DBNavigator (вкладка DataControls) и расположить его на верхней панели каждой вкладки под объектом DBGrid (Рис. 10 слева).

ЗАМЕЧАНИЕ: Навигатор используется для управления набором данных и обеспечивает соответствующий интерфейс пользователя.



Рис. 10.

  1. Настроить каждый объект DBGrid на отображение данных из соответствующих таблиц, выбрав нужное в свойстве DataSource (Рис. 10 справа).

  2. Настроить каждый объект DBNavigator на соответствующий объект DBGrid, выбрав нужное в свойстве DataSource (Рис. 10 справа).

  3. Запустить программу на выполнение: команда Run, пункта меню Run (кнопка или F9).

ЗАМЕЧАНИЕ: пункты верхнего меню еще не подключены – доступа к таблицам нет, на форме расположен фоновый рисунок. Закрыть окно приложения.

  1. Прописать обработчик события OnCreate при запуске клиентского приложения (т.е. создании формы) так, чтобы соединение с БД было выключено, активизирован фоновый рисунок и скрыта панель с вкладками окна приложения.

ЗАМЕЧАНИЕ: следует выполнить следующие действия

  1. активизировать объект форму, щелкнув по заголовку или выбрав в списке

  2. перейти на вкладку Events (события) в ObjectInspector и выбрать событие OnCreate, создать обработчик события, содержащий команды:

PageControl1->Visible=false;

Image1->Visible=true;

  1. На модуле данных также закрыть соединение с сервером базы данных (свойство Connected компонента SQLConnection установить в false) и отключить компоненты SimpleDataSet и DataSource.




  1. Задать соответствующие обработчики события OnClick при выборе пунктов и подпунктов верхнего меню.

ЗАМЕЧАНИЕ:

Для пункта меню ПОДКЛЮЧИТЬ БАЗУ.

  1. вызвать для редактирования расположенный на форме объект MainMenu1;

  2. выбрать пункт Подключить базу;

  3. создать для события OnClick обработчик события, содержащий команды (ниже приведены команды для варианта 30):

DM->SQLConnection->Connected=true;

DM->SimpleFilials->Open();

DM->SimpleVidStrah->Open();

DM->SimpleDogovors->Open();

DM->DataSourceFilials->Enabled=true;

DM->DataSourceVidStrah->Enabled=true;

DM->DataSourceDogovors->Enabled=true;

Для пункта меню ВЫХОД.

  1. выбрать пункт Выход;

  2. создать для события OnClick обработчик события, содержащий команды:

DM->SQLConnection->Connected=false;

Form1->Close();

Для пункта меню активизации вкладки на форме.

  1. выбрать пункт с названием вкладки;

  2. учитывая, что каждая вкладка нумеруется от 0 и далее, записать команды вида:

Image1->Visible=false;

PageControl1->Visible= true;

PageControl1->ActivePageIndex=0; //указать нужный индекс вкладки

  1. Запустить программу на выполнение и проверить работу запрограммированных пунктов верхнего меню.

  2. Запустить приложение и внести изменения в таблицы с помощью инструментов навигационной панели : вставки новой записи, удаления, обновления данных. Закрыть окно приложения.

  3. Снова запустив приложение, проверить сохранность внесенных изменений в таблице.

ЗАМЕЧАНИЕ: изменения не будут сохранены, т.к. не были прописаны обработчики событий обновления, внесения и удаления записей в таблицах для объектов типа Навигатор.

  1. Задать соответствующие обработчики события обновления, внесения и удаления записей в таблицах БД для объектов типа SimpleDataSet.

ЗАМЕЧАНИЕ:

Пересылка данных между сервером и компонентом SimpleDataSet осуществляется с помощью пакетов. Размер пакетов (по числу записей) можно задать с помощью свойства PacketRecords типа int. По умолчанию устанавливается значение -1, которое означает, что один пакет должен содержать все записи набора данных. Если значение данного свойства равно 0, то в пакете передаются только метаданные.

Фиксация внесенных при редактировании изменений и отправка данных на сервер осуществляется в обработчике события AfterPost, возникающего при нажатии кнопки ^ Post (утвердить результат изменения записи) компонента DBNavigator и при переходе в компоненте DBGrid на другую строку.

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

С учетом выше сказанного для главных таблиц БД следует для события AfterPost объектов SimpleDataSet создать процедуру обработчика события по щелчку мыши следующего вида (для варианта 30):

void __fastcall TDM::SimpleFilialsAfterPost(TDataSet *DataSet)

{

SimpleFilials->ApplyUpdates(-1);

SimpleDogovors->Refresh(); //обновление набора данных

//(старых данных в подчиненной

//таблице Dogovors)для отображения

//визуальными компонентами

//изменений в приложении

}
void __fastcall TDM::SimpleVidstrahAfterPost(TDataSet *DataSet)

{

SimpleVidstrah->ApplyUpdates(-1);

SimpleDogovors->Refresh(); //обновление набора данных

//(старых данных в подчиненной

//таблице Dogovors)для отображения

//визуальными компонентами

//изменений в приложении

}

Для подчиненной таблицы достаточно одной команды в процедуре для соответствующего события AfterPost, например, для В30:

SimpleDogovors->->ApplyUpdates(-1);
Аналогично, прописать команды процедур обработчиков событий AfterDelete для компонентов SimpleDataSet для того, чтобы выполнялось удаление данных в таблицах БД на сервере.


  1. Запустить приложение и внести изменения в таблицы с помощью инструментов навигационной панели : вставки новой записи, удаления, обновления данных. Закрыть окно приложения.

  2. Снова запустив приложение, проверить сохранность внесенных изменений в таблице.

ЗАМЕЧАНИЕ: изменения должны быть сохранены. В противном случае проверьте созданные обработчики событий, обновления, внесения и удаления записей в таблицах для объектов типа Навигатор (см. п. 34).
  1   2

Добавить документ в свой блог или на сайт

Похожие:

Лабораторная работа №9-11 Тема iconДомашнее задание 6 Лабораторная работа Рекурсия и ее применение....
Лабораторная работа Простейшие алгоритмы сортировок (сортировка методом пузырька, вставки, выборки) 5

Лабораторная работа №9-11 Тема iconЛабораторная работа №9 Тема
Тема: Реализация алгоритмов с одномерными и двумерными массивами в виде программ

Лабораторная работа №9-11 Тема iconЛабораторная работа №5 Тема
Тема: Реализация алгоритмов с вложенными ветвлениями и оператором выбора в виде программ

Лабораторная работа №9-11 Тема iconЛабораторная работа №1 Тема
Тема: Разработка линейных программ и их реализация и тестирование в среде программирования Pascal

Лабораторная работа №9-11 Тема iconЛабораторная работа №10 Тема
Тема: Реализация классических алгоритмов для работы с массивами и строковыми величинами в виде программ

Лабораторная работа №9-11 Тема iconЛабораторная работа №4 тема: Работа с таблицами в текстовом редакторе ms word
Цель: ознакомиться с возможностями редактора по созданию таблиц и закрепить на практике полученные навыки

Лабораторная работа №9-11 Тема iconЛабораторная работа №7-9 Тема
Тема: Создание в программе CodeGear rad studio (C++Builder) клиентского приложения по технологии dbExpress для клиент-серверной субд...

Лабораторная работа №9-11 Тема iconЛабораторная работа №6 Тема: Розв’язування

Лабораторная работа №9-11 Тема iconЛабораторная работа №6. Тема работы
Тема работы: исследование цепи трехфазного тока при соединении приемников треугольником

Лабораторная работа №9-11 Тема iconЛабораторная работа №7. Тема работы
Тема работы: исследование цепей переменного тока, содержащие индуктивно связанные катушки

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
uchebilka.ru
Главная страница


<