Шрифт
Использование результатов FOR XML в коде приложений
Play

Использование результатов FOR XML в коде приложений

При помощи предложения FOR XML в SQL-запросах можно получать и даже преобразовывать результаты запросов в формат XML. Если приложение способно обрабатывать XML-данные, эта возможность позволяет выполнять следующие задачи:

Запрашивать из таблиц SQL экземпляры значений данных XML (SQL Server)

Применять TYPE Directive in FOR XML Queries для возврата результата запроса, содержащего текст или двоичные данные, в формате XML

В этом подразделе содержатся примеры, демонстрирующие перечисленные возможности.

Получение данных FOR XML при использовании ADO и островов XML-данных

Результаты, возвращаемые запросами FOR XML, могут быть сохранены объектом Stream ADO или другим объектом, поддерживающим COM-интерфейс IStream (например, объектами ASP Request и Response ).

Например, следующий код ASP отображает результаты запроса к столбцу Demographics типа xml таблицы Sales.Store в образце в базе данных AdventureWorks. В частности, запрос производит поиск значения столбца для строки, в которой значение CustomerID равно 3.

Этот пример ASP-страницы содержит работающий на стороне сервера скрипт VBScript, выполняющий запрос FOR XML через ADO и возвращающий результат в виде острова XML-данных с именем MyDataIsle. Затем этот остров XML-данных возвращается браузеру и подвергается дополнительной обработке на стороне клиента После этого на стороне клиента дополнительный код скрипта VBScript используется для обработки содержимого острова XML-данных. После этого этапа обработки содержимое отображается в виде результирующего DHTML и открывается окно сообщения, где отображается обработанное содержимое острова XML-данных.

Проверка этого примера

Убедитесь, что установлены службы IIS и образец базы данных AdventureWorks для SQL Server .

Данному примеру требуются службы IIS версии 5.0 или более поздней, с включенной поддержкой ASP. Кроме того, необходимо установить образец базы данных AdventureWorks.

Скопируйте код приведенного выше примера и вставьте его в редактор текста или XML. Сохраните файл под именем RetrieveResults.asp в корневой каталог документов IIS. Обычно это каталог «C:\Inetpub\wwwroot».

Откройте страницу ASP в окне браузера, указав следующий URL-адрес. Замените «MyServer» на «localhost» или на действительное имя сервера, на котором установлены службы IIS и SQL Server .

Результаты, сформированные в виде страниц HTML, будут выглядеть следующим образом:

Обработка на стороне сервера

Page Generated @ 3/11/2006 3:36:02 PM

Connect String = Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=AdventureWorks;Integrated Security=SSPI;

ADO Version = 2.8

Query String = SELECT Demographics from Sales.Store WHERE CustomerID = 3 FOR XML AUTO

Передача кода XML для обработки на клиенте.

Обработка XML-документа MyDataIsle на стороне клиента

AnnualSales: 1500000

AnnualRevenue: 150000

BankName: Primary International

BusinessType: OS

YearOpened: 1974

Specialty: Дорога

SquareFeet: 38000

Brands: 3

Internet: DSL

NumberEmployees: 40

Затем окно сообщения VBScript отобразит следующее содержимое исходного, нефильтрованного массива XML-данных, который был возвращен по запросу FOR XML.

Получение данных FOR XML при использовании ASP.NET и .NET Framework

Как и в предыдущем примере, код ASP.NET отображает результаты запроса столбца Demographics типа xml из таблицы Sales.Store в образце базы данных AdventureWorks. Как и в предыдущем случае, запрос ищет значение этого столбца, соответствующее строке, в которой CustomerID равен значению 3.

В этом примере применяются следующие управляемые интерфейсы прикладных программ (API) Microsoft .NET Framework для возврата и подготовки просмотра результатов запроса FOR XML:

Соединение с SQL Server производится через SqlConnection по строке соединения, содержащейся в символьной переменной, strConn.

После этого SqlDataAdapter , используя соединение SQL и указанную строку SQL-запроса, выполняет запрос FOR XML.

После выполнения запроса вызывается метод SqlDataAdapter.Fill , который передает экземпляр DataSet, MyDataSet, чтобы заполнить набор данных результатами выполнения запроса FOR XML.

Затем вызывается метод DataSet.GetXml , который возвращает результаты запроса в виде строки, отображаемой на странице HTML, формируемой на сервере.

Проверка этого примера

Убедитесь, что установлены службы IIS и образец базы данных AdventureWorks для SQL Server .

Данному примеру требуются службы IIS версии 5.0 или более поздней, с включенной поддержкой ASP.NET. Кроме того, необходимо установить образец базы данных AdventureWorks.

Скопируйте код приведенного выше примера и вставьте его в редактор текста или XML. Сохраните файл под именем RetrieveResults.aspx в корневой каталог документов IIS. Обычно это каталог «C:\Inetpub\wwwroot».

Откройте страницу ASP.NET в окне браузера, указав следующий URL-адрес. Замените «MyServer» на «localhost» или на действительное имя сервера, на котором установлены службы IIS и SQL Server .

Результаты, сформированные в виде страниц HTML, будут выглядеть следующим образом:

Обработка на стороне сервера

Поддержка типа данных xml в SQL Server позволяет реализовать требование, согласно которому результат запроса FOR XML должен быть возвращен в качестве типа данных xml, а не типов данных string или image, с помощью задания директивы TYPE. Если в запросе FOR XML указана директива TYPE, она предоставляет программный доступ к результатам FOR XML, как описано в разделе Использование XML-данных в приложениях.

📎📎📎📎📎📎📎📎📎📎