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


Использование XML-данных в приложениях

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

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

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

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

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

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

Чтобы использовать компоненты MDAC для доступа к типам и функциям, представленным в SQL Server 2005 (9.x), необходимо задать свойство инициализации DataTypeCompatibility в строка подключения ADO.

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

Const DS = "MyServer"
Const DB = "AdventureWorks2022"

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=MSOLEDBSQL" & _
                   ";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

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

Примечание.

SQL Server Native Client (SNAC) не поставляется с:

  • SQL Server 2022 (16.x) и более поздних версий
  • SQL Server Management Studio 19 и более поздних версий

Собственный клиент SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуется для разработки новых приложений.

Для новых проектов используйте один из следующих драйверов:

Сведения о компонентах SQLNCLI, поставляемых вместе с механизмом базы данных SQL Server (версий с 2012 по 2019 г.), см. в этом документе о исключении жизненного цикла поддержки.

Тестирование этого примера

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

    Дополнительные сведения см. в статье Программирование SQL Server Native Client.

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

    Для этого примера требуется образец базы данных AdventureWorks2022 .

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

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

    Например, если MyServer указано, его следует заменить на (local) или фактическое имя сервера, на котором установлен SQL Server.

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

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

Row 1

<StoreSurvey xmlns="http://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="http://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 из столбца типа данных 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 могут принимать значения параметров так же, как и другие столбцы и типы данных, такие как строка или целое число.

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

См. также