Главная » Delphi » Delphi 2006 – Технология DB Web

0

В системе Delphi существует технология DB Web, которая еще больше упрощает процесс создания Web-приложений, взаимодействующих с базами данных. Набор компонентов DB Web даже не требует явной реализации процесса связывания, поскольку выполняет все нужные действия автоматически.

Пример: связь с базами данных с помощью технологии DB Web

1.    Выполним вышеописанные шаги по созданию приложения ASP.NET до момента, когда мы создали работающее соединение с СУБД, но еще не разместили на форме пользовательский компонент DataGrid. Вместо него воспользуемся компонентом DBWebDataSource (Источник данных DB Web) из группы DB Web палитры компонентов (рис. 6.12).

2.     Свяжем этот компонент с существующим набором данных dataSetl через свойство DataSource (обратите внимание, что можно сразу выбрать и конкретную таблицу, CUSTOMER). Таким образом компонент DBWebDataSource служит своеобразным переходным звеном между компонентами BDP.NET и объектами интерфейса DB Web.

3.    Добавим на форму компонент DBWebGrid, практически аналогичный по предназначению компоненту DataGrid. В его свойстве DBDataSource выберем только что созданный источник DBWebDataSourcel, а в свойстве TableName теперь укажем название доступной таблицы CUSTOMER.

На форме сразу же появится содержимое данной таблицы (рис. 6.13). Напомним, что при работе с элементами набора Web Controls данные в Дизайнере сразу не показывались, так как их предварительно надо было связать с этими элементами с помощью метода DataBind, причем непосредственно в процессе работы программы.

Puc. 6.13. Доступ к таблице баз данных на этапе проектирования

ником данных выполнится автоматически. Кроме того, элементы управления DB Web совместимы с поставщиками данных ASP.NET и BDP.NET. Дополнительно отметим, что использованные нами компоненты обладают встроенными средствами прокручивания набора данных в окне браузера и средствами редактирования значений в текущей строке!

Замечание: DB Web и XML

Еще одна полезная возможность набора компонентов DB Web — их способность работать с XML-файлами как с источниками данных. Такие файлы представляют собой обычный текст с тегами разметки, структурирующими содержимое не только в реляционном, но и, например, в иерархическом виде. При этом надо учитывать, что полная открытость XML-файлов делает их беззащитными от внешнего просмотра, поэтому вряд ли разумно хранить в них какую-либо конфиденциальную информацию. И конечно, если сервер СУБД выполняет множество дополнительных функций по ведению базы данных (поддерживает транзакции, блокирует при необходимости таблицу или запись от конфликтных изменений, сохраняет ее целостность, выполняет различные действия по оптимизации запросов), то работа с XML-файла- ми таких возможностей не даст. Лучше всего задействовать XML-файлы в качестве своеобразной небольшой локальной базы данных, сведения в которой хранятся не реляционно, а в виде иерархических структур. Чаще всего потребность в обработке XML-файлов востребована в интеграционных приложениях, когда данные из одних баз и систем передаются в другие и нуждаются во временном хранилище, в идеале — имеющем иерархическую структуру.

Пример: сохранение данных в XML-файле

Никаких особых требований для использования XML-файлов в качестве источников данных в рамках технологии DB Web не существует. Рассмотрим сначала, как выгрузить существующий набор данных в XML-файл,

1.     Описанным выше способом создадим приложение ASP.NET.

2.     Подготовим компоненты связи BDP.NET.

3.     Поместим на форму уже знакомый компонент DBWebDataSource.

4.       Выберем XML-файл и в его свойстве XMLFileName укажем пока несуществующее имя файла.

5.       Теперь достаточно запустить приложение и соответствующий файл будет создан.

Итак, если требуется перевести некоторый набор данных в XML-формат (сохранить в виде XML-файла), то применяется вышеописанная схема, когда компонент DataSet связывается с существующим адаптером данных BDP. NET (он размещается на форме и настраивается заранее, после чего переводится в активное состояние). А в качестве XML-файла в свойстве XMLFileName источника данных DBWebDataSource указывается несуществующий файл, и после запуска такого приложения этот файл будет создан, а в него записана размеченная в соответствии с требованиями спецификации XML информация из набора данных, заданного компонентом DataSet.

Основной недостаток использования XML-файлов в качестве «базы данных», как уже говорилось, заключается в том, что организовать корректную работу множества пользователей с одним файлом практически невозможно. Как только одна из клиентских программ начинает модифицировать такой файл-базу, все остальные пользователи будут либо ждать окончания этого процесса, либо пытаться одновременно занести в файл противоречивые данные, модифицированные разными клиентами. При работе с компонентом- источником данных DB Web можно явно назначить режим поддержки множества копий рабочего XML-файла, для чего в свойство UseUniqueFileName надо занести значение true. Однако при этом необходимо аккуратно задать права доступа дистанционных клиентских приложений к каталогу с этим файлом (указать в Windows права записи в этот общедоступный каталог).

В результате для каждого клиентского подключения к XML-файлу, указанному в свойстве XMLFileName, во избежание противоречий будет формироваться временный XML-файл с уникальным именем для «персонального» использования. Однако анализ и синхронизацию содержимого этих файлов разработчику придется выполнять самому. Например, создавать отдельные утилиты, которые в плановом режиме будут запускаться на сервере и объединять все данные, поступившие из клиентских XML-файлов.

Задача эта не тривиальная, поэтому представляется оптимальным эксплуатировать XML-файлы прежде всего в качестве источников данных в режиме «только для чтения» (например, для последующей загрузки в полноценную реляционную СУБД).

Пример: загрузка данных из XML-файла

Загрузка набора данных из XML-файла происходит следующим образом.

1.     Создадим пустое Web-приложение ASP.NET.

2.       Разместим на форме компонент DataSet из раздела Data Components палитры инструментов, а также компонент DBWebDataSource.

3.       В свойстве XMLFileName последнего источника данных зададим существующий XML-файл, а в свойстве DataSource — набор данных (DataSetl).

4.       Далее добавим какой-либо из визуальных компонентов DB Web, например DBWebGrid, и свяжем его через свойство DataSource с источником данных DBWebDataSource. В результате он отобразит содержимое XML-файла как содержимое таблицы данных.

Бобровский С. И. Технологии Delphi 2006. Новые возможности. — СПб.: Питер, 2006. — 288 е.: ил.

По теме:

  • Комментарии