Поделиться через


Работа с типом данных XML в приложениях

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

  • Обработка XML в столбцах типа xml с помощью ADO и собственного клиента SQL Server

  • Обработка XML в столбцах типа xml с помощью ADO.NET

  • Обработка типа xml в параметрах с помощью ADO.NET

Обработка XML в столбцах типа xml с помощью ADO и собственного клиента SQL Server

Чтобы при помощи компонентов MDAC получить доступ к типам и возможностям, появившимся в SQL Server 2005, в строке соединения ADO необходимо указать свойство инициализации DataTypeCompatibility.

Например, в следующем образце скрипта Visual Basic Scripting Edition (VBScript) выдается результат запроса столбца Demographics, содержащего данные типа xml, из таблицы Sales.Store образца базы данных AdventureWorks2008R2. В частности, запрос осуществляет поиск значения этого столбца для строки, где значение CustomerID равно 3.

Const DS = "MyServer"
Const DB = "AdventureWorks2008R2"

Set objConn = CreateObject("ADODB.Connection")
Set objRs = CreateObject("ADODB.Recordset")

CommandText = "SELECT Demographics" & _
              " FROM Sales.Store" & _
              " INNER JOIN Sales.Customer" & _
              " ON Sales.Store.BusinessEntityID = sales.customer.StoreID" & _
              " WHERE Sales.Customer.CustomerID = 3" & _
              " OR Sales.Customer.CustomerID = 4"
                   
ConnectionString = "Provider=SQLNCLI10" & _
                   ";Data Source=" & DS & _
                   ";Initial Catalog=" & DB & _
                   ";Integrated Security=SSPI;" & _
                   "DataTypeCompatibility=80"

'Connect to the data source.
objConn.Open ConnectionString

'Execute command through the connection and display
Set objRs = objConn.Execute(CommandText)

Dim rowcount
rowcount = 0
Do While Not objRs.EOF
   rowcount = rowcount + 1
   MsgBox "Row " & rowcount & _
           vbCrLf & vbCrLf & objRs(0)
   objRs.MoveNext
Loop

'Clean up.
objRs.Close
objConn.Close
Set objRs = Nothing
Set objConn = Nothing

В этом примере показано, как настроить свойство совместимости типов данных. По умолчанию, при использовании собственного клиента SQL Server это свойство принимает значение 0. После присвоению этому свойству значения 80, поставщик собственного клиента SQL Server представляет столбцы типа данных xml и определяемого пользователем типа в виде типов данных SQL Server 2000. то есть DBTYPE_WSTR и DBTYPE_BYTES соответственно.

Собственный клиент SQL Server должен быть установлен на клиентском компьютере, а в строке соединения он должен быть указан в качестве поставщика данных: "Provider=SQLNCLI10;...".

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

  1. Убедитесь, что на компьютере клиента установлен собственный клиент SQL Server и доступны компоненты MDAC 2.6.0 или более поздней версии.

    Дополнительные сведения см. в разделе Программирование с помощью собственного клиента SQL Server 2008 R2.

  2. Убедитесь, что образец базы данных База данных AdventureWorks2008R2 установлен в SQL Server.

    Для этого примера требуется образец базы данных База данных AdventureWorks2008R2. Дополнительные сведения см. в разделе Вопросы установки образцов кода и образцов баз данных SQL Server.

  3. Скопируйте код, приведенный ранее в этом подразделе, и вставьте его в текстовый редактор или редактор кода. Сохраните файл под именем HandlingXmlDataType.vbs.

  4. Измените скрипт так, как необходимо для вашей установки SQL Server, и сохраните изменения.

    В частности, вместо MyServer необходимо указать либо (local), либо действительное имя сервера, на котором установлен SQL Server.

  5. Запустите файл скрипта HandlingXmlDataType.vbs на выполнение.

Результат должен примерно соответствовать следующему:

Row 1

<StoreSurvey xmlns="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey">
  <AnnualSales>1500000</AnnualSales>
  <AnnualRevenue>150000</AnnualRevenue>
  <BankName>Primary International</BankName>
  <BusinessType>OS</BusinessType>
  <YearOpened>1974</YearOpened>
  <Specialty>Road</Specialty>
  <SquareFeet>38000</SquareFeet>
  <Brands>3</Brands>
  <Internet>DSL</Internet>
  <NumberEmployees>40</NumberEmployees>
</StoreSurvey>

Row 2

<StoreSurvey xmlns="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey">
  <AnnualSales>300000</AnnualSales>
  <AnnualRevenue>30000</AnnualRevenue>
  <BankName>United Security</BankName>
  <BusinessType>BM</BusinessType>
  <YearOpened>1976</YearOpened>
  <Specialty>Road</Specialty>
  <SquareFeet>6000</SquareFeet>
  <Brands>2</Brands>
  <Internet>DSL</Internet>
  <NumberEmployees>5</NumberEmployees>
</StoreSurvey>

Обработка XML-данных в столбцах типа xml с помощью ADO.NET

Для работы со столбцами, содержащими данные типа xml, с помощью ADO.NET и Microsoft .NET Framework, можно использовать стандартную реализацию класса SqlCommand. Например, столбец с данными типа xml и его значения могут быть запрошены таким же образом, как и любые столбцы SQL, с помощью SqlDataReader. Но если необходимо работать со столбцами типа xml как с XML-данными, то сначала необходимо связать содержимое с типом XmlReader.

Дополнительные сведения и примеры кода см. в разделе «Значения XML-столбцов в модуле чтения данных» в документации по пакету Microsoft .NET Framework 2.0 SDK.

Обработка столбцов типа xml в параметрах с помощью ADO.NET

Для обработки XML-данных, переданных в качестве параметра в ADO.NET и .NET Framework, значение можно представить в виде экземпляра данных типа SqlXml. Специальная обработка не производится, поскольку для столбцов типа xml в SQL Server допустимы такие же значения параметров, как и для любых других столбцов и типов данных, например string или integer.

Дополнительные сведения и примеры кода см. в разделе «XML-значения в качестве параметров» в документации по пакету Microsoft .NET Framework 2.0 SDK.

См. также

Основные понятия