Использование результатов 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-данных в приложениях.