Лабораторная работа: Технологія WebSnap
БД надають можливість зберігати і обробляти великі обсяги інформації. Можливість роботи з БД на сьогодні є просто необхідним атрибутом будь-якого засобу розробки Web-прикладень. Технологія WebSnap надає достатньо продумані і зручні засоби публікації вмісту БД, а в поєднанні з СКБД Interbase дозволяє будувати прикладення для роботи з БД, що задовольняють запитам найвередливіших користувачів. Спроектуємо сторінку для відображення вмісту таблиці biolife демонстраційної БД Interbase 7.5 C:\Program Files\Common Files\ Borland Shared\Data\dbdemos.gdb .
Вказівки по налагодженню бази даних
Для роботи з БД необхідно встановити на комп'ютер InterBase Server 7.5 і за допомогою, наприклад, програми IBExpert зареєструвати БД C:\Program Files\ Common Files\ Borland Shared\Data\dbdemos.gdb під псевдонімом IBDBDemos (мал. 27 ).
Малюнок 27
Створення WebSnap-сервера
Для розташування компонентів зв'язку з БД в проект необхідно вставити модуль даних WebDataModule за допомогою майстра. Виконаємо команду File | New | Other | WebSnap | WebSnap Data Module. У діалозі, що з'явився (мал. 28 ), вкажемо спосіб створення модуля Always і спосіб його знищення Cache Instance.
Малюнок 28
Після цього розташуймо в модулі компоненти: IBDatabase , IBTransaction , IBDataSet і зв'яжемо їх з БД IBDBDemos і таблицею biolife , яка містить графічні поля, поля коментарів, числові і текстові поля, які можна публікувати і редагувати з використанням WebSnap (мал. 29 ).
Малюнок 29
В одержаний модуль додамо DataSetAdapter і зв'яжемо його з джерелом даних, призначивши властивості DataSet значення IBDataSet1. Далі двічі клацнемо мишею по компоненту DataSetAdapter1 і за допомогою команди Add All Fields контекстного меню встановимо список полів, що відображаються (мал.. 30 ).
Малюнок 30
Для публікації даних таблиці БД найзручніше використовувати компонент-продюсер AdapterPageProducer . Додамо в модуль сторінки PageProducerPage2 компонент AdapterPageProducer . Після цього подвійним клацанням миші по компоненту AdapterPageProducer , викличемо редактора для побудови HTML-сторінки. Натиснемо в редакторі кнопку New Item і додамо Web-компонент AdapterForm1, далі на AdapterForm1 тією ж кнопкою додамо компонент AdapterGrid1 і встановимо його властивості:
· Adapter в значення BiolifeWebDataModule->DataSetAdapter1 (для зв'язку сторінки з джерелом даних потрібно не забути додати в початковий код сторінки посилання #include "Unit4.h" на модуль даних WebDataModule );
· Adapter Mode в значення Edit (режим редагування );
· Командою AddAllColumns контекстного меню визначимо список полів, що відображаються (тут також можна змінити найменування полів на національні за допомогою їх властивостей Caption).
Оскільки WebSnap використовується для побудови stateless -серверів , що працюють з БД, слід вказати первинний ключ, що дозволяє набору даних активізувати навігацію по таблиці і маніпуляцію даними по запиту клієнта. WebSnap виконає все це автоматично після завдання первинного ключа . Використовуємо як первинний ключ поле Species No. Спочатку слід вибрати поле в Object Treeview для BiolifeWebDataModule (мал. 3.31 ).
Малюнок 31
Потім необхідно модифікувати властивість ProviderFlags в інспекторі об'єктів, встановивши pfInKey в значення true, щоб вказати, що Species No є первинним ключем для даного набору даних. Тоді сторінка буде доповнена «мережею», що відображує поля записів таблиці (мал. 32 ).
Малюнок 32
Наступним Web-компонентом, який ми додамо на AdapterGrid1 , буде компонент AdapterCommandColumn1 , у якому відображатиметься кнопка CmdEditRow (Детали ) керування поточним записом таблиці (мал. 33 ). Для кнопки CmdEditRow встановимо властивість PageName в значення DetailPage , яка ще не створена і в якій буде надана можливість редагування таблиці БД.
Для редагування даних поточного запису таблиці БД створимо ще одну Web-сторінку. Виконаємо команду File | New | Other | WebSnap | WebSnap Page Module.
У діалозі параметрів сторінки слід змінити тип Type продюсера з PageProducer на AdapterPageProducer, а також встановити прапорець LoginRequired, оскільки за умовчанням сторінка для редагування даних повинна бути доступна не всім користувачами (мал. 34 ).