Используя указанную строку подключения, обработ­чик узла database создает экземпляр SqlConnection, а затем сохраняет его в объектном словаре (object dictionary), инициализируемом при запуске функции, обрабатывающей запрос. Этот словарь хранит все соединения с

базой данных и экземпляры бизнес-объектов, объявленные через узлы

class и database. Для перехвата ошибок в ProcessRequest служит конструк­ция try...catch...finally. В блоке finally объектный словарь просматривается, и все соединения с базами данных закрываются.

После объявления базы данных можно определять запросы с помощью узла query. В нем указывается соединение, для которого формируется зап­рос, и тип запроса (например текст или хранимая процедура). Текст узла должен представлять запрос или хранимую процедуру, возвращающую XML. В узел query может быть вложено несколько узлов parameter. Вог как выглядит узел query с дочерним узлом parameter из приложения-примера:

<skin: query var="nwind" type="Te>;t">

<skin:parameter name="9pr<?dl(>" datatype="varchar" size="30" key=":ld" coltection=-querystring" />

SELECT * FROM Products productinfo

WHERE productlD = eprodID FOR XML AUTO </skin:query>

В этом узле query параметр                                 передается как элемент id строки

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

Код, обрабатывающий данный узел, создает объект                                                исполь-

зуя указанный экземпляр SqlConnection и текст команды. Затем он пере­бирает все дочерние узлы в поисках узлов parameter. Найденные узлы parameter преобразуются в объекты-параметры и добавляются в список параметров Sqit'oiimv.md. По завершении обработки команда исполняется через ExecuteXmlReader вспомогательной функцией Execute из класса SkinUtil