Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Использование XML совместно с SQL.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.39 Mб
Скачать

Поддержка sqlxml в .Net Framework

Через ADO.NET нельзя получить доступ к таким сервисным провайдерам, как SQLXMLOLEDB, поэтому комплект SQLXML 3.0 содержит сборку Microsoft.Data.SqlXml. В нее входят следующие классы:

  • SqlXmlCommand – позволяет сохранять результаты в поток, а также предоставляет доступ к специальным свойствам.

  • SqlXmlParameter – представляет собой параметр запроса.

  • SqlXmlAdapter – позволяет заполнить DataSet с помощью SqlXmlCommand.

Самый богатый свойствами и методами класс – SqlXmlCommand, с помощью которого можно выполнять запросы XPath, исполнять шаблоны и выполнять автоматическую трансформацию, причем все это может быть сделано на клиенте.

Свойства класса SqlXmlCommand

  • ClientSideXml – если установлен в true, преобразование recordset-а в XML выполняется на клиенте. Подробности в [1].

  • SchemaPath – путь до аннотированной схемы, с помощью которой можно выполнять запросы XPath.

  • XslPath – Путь до файла XSLT, которая будет автоматически использована после выборки данных (и, если необходимо, преобразования их в XML).

  • Namespaces – Задает пространства имен, которые могут понадобиться для исполнения запросов XPath.

  • RootTag – Так как результирующий XML-документ не является правильно оформленным вследствие того, что не имеет корневого элемента, непосредственная работа с ним может быть затруднена. Свойство RootTag позволяет задать корневой элемент результирующего документа.

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

Тип

Описание

SqlXmlCommandType.Sql

Стандартный код T-SQL.

SqlXmlCommandType.XPath

Запрос XPath.

SqlXmlCommandType.Template

Выполнение шаблона.

SqlXmlCommandType.TemplateFile

Выполнение шаблона, находящегося в файле.

SqlXmlCommandType.UpdateGram

Выполнение апдейтаграммы. Подробности в [1]

SqlXmlCommandType.Diffgram

Выполнение дифграммы.

В форумах по ASP.NET иногда поднимаются вопросы наподобие: «Как наиболее эффективно и просто передать XML-документ пользователю?». Вот пример кода на VB.NET:

Передача XML пользователю с помощью SqlXmlCommand.

Dim cmd as SqlXmlCommand

cmd = New SqlXmlCommand("Provider=SQLOLEDB;User ID=user;" _

& "Data Source=server;Password=password;")

cmd.CommandText = "select * from [table] for xml auto"

cmd.CommandType = SqlXmlCommandType.Sql

cmd.RootTag = "root"

Response.Clear()

Response.ContentType = "text/xml"

cmd.ExecuteToStream(Response.OutputStream)

Response.End()

Помимо метода ExecuteToStream, класс SqlXmlCommand предоставляет другие удобные методы выборки данных:

  • ExecuteStream – создает и возвращает новый поток.

  • ExecuteXmlReader – создает и возвращает экземпляр класса XmlReader.

Примеры выполнения запросов XPath и шаблонов можно посмотреть в [1]. Более подробную информацию об использовании этих классов можно получить в [4].