Share via


Usar datos XML en las aplicaciones

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

En este artículo se describen las opciones que están disponibles para trabajar con tipos de datos xml en una aplicación. El artículo incluye información acerca de lo siguiente:

  • Controlar XML desde una columna de tipo xml usando ADO y SQL Server Native Client

  • Controlar XML desde una columna de tipo xml utilizando ADO.NET

  • Controlar el tipo xml en parámetros utilizando ADO.NET

Controlar XML desde una columna de tipo xml usando ADO y SQL Server Native Client

Para usar componentes MDAC con el fin de obtener acceso a los tipos y características introducidos en SQL Server 2005 (9.x), debe establecer la propiedad de inicialización DataTypeCompatibility en la cadena de conexión de ADO.

Por ejemplo, en el siguiente ejemplo de Visual Basic Scripting Edition (VBScript) se muestra el resultado de la realización de una consulta a una columna de tipo de datos xml, Demographics, de la tabla Sales.Store de la base de datos de ejemplo AdventureWorks2022. Específicamente, la consulta busca el valor de la instancia de esta columna para la fila en la que CustomerID es igual a 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

Este ejemplo muestra cómo establecer la propiedad de compatibilidad de tipos de datos. De manera predeterminada, se establece en 0 cuando se usa SQL Server Native Client. Si establece el valor en 80, el proveedor de SQL Server Native Client hará que las columnas de tipo xml y las definidas por el usuario aparezcan como tipos de datos de SQL Server 2000 (8.x). Serán DBTYPE_WSTR y DBTYPE_BYTES, respectivamente.

Nota:

SQL Server Native Client (a menudo abreviado SNAC) se ha quitado de SQL Server 2022 (16.x) y SQL Server Management Studio 19 (SSMS). No se recomienda SQL Server Native Client (SQLNCLI o SQLNCLI11) ni el proveedor OLE DB de Microsoft heredado para SQL Server (SQLOLEDB) para el desarrollo de nuevas aplicaciones. Cambie al nuevo controlador OLE DB de Microsoft (MSOLEDBSQL) para SQL Server o al controlador ODBC de Microsoft ODBC Driver for SQL Server más reciente de ahora en adelante. Para SQLNCLI que se incluye como componente de motor de base de datos de SQL Server (versiones 2012 a 2019), consulte esta excepción de ciclo de vida de soporte técnico.

Probar este ejemplo

  1. Compruebe que SQL Server Native Client está instalado y que en el equipo cliente está disponible MDAC 2.6.0 o versiones posteriores.

    Para obtener más información, consulte Programación de SQL Server Native Client.

  2. Compruebe que la base de datos de ejemplo AdventureWorks2022 de SQL Server está instalada.

    Este ejemplo requiere la base de datos de ejemplo AdventureWorks2022.

  3. Copie el código que se mostró anteriormente en este artículo y péguelo en su editor de texto o de código. Guarde el archivo como HandlingXmlDataType.vbs.

  4. Modifique el script según sea necesario para la instalación de SQL Server y guarde los cambios.

    Por ejemplo, donde se especifique MyServer, debe sustituirlo por (local) o por el nombre real del servidor en el que está instalado SQL Server.

  5. Ejecute HandlingXmlDataType.vbs y ejecute el script.

Los resultados serán similares a los de la siguiente salida de ejemplo:

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>

Controlar XML desde una columna de tipo xml utilizando ADO.NET

Para controlar XML desde una columna de tipo de datos xml mediante ADO.NET y Microsoft .NET Framework, puede usar el comportamiento estándar de la clase SqlCommand. Por ejemplo, una columna de tipo de datos xml y sus valores se pueden recuperar de la misma manera que se recupera cualquier columna SQL utilizando SqlDataReader. Sin embargo, si desea trabajar con el contenido de una columna de tipo de datos xml como XML, primero tendrá que asignar el contenido a un tipo XmlReader.

Para obtener más información y código de ejemplo, consulte “Valores de columnas XML en un lector de datos” de la documentación del SDK de Microsoft .NET Framework 2.0.

Controlar una columna de tipo xml como parámetros mediante ADO.NET

Para controlar un tipo de datos xml pasado como un parámetro en ADO.NET y .NET Framework, puede indicar el valor como una instancia del tipo de datos SqlXml. No es necesario llevar a cabo ningún control especial, porque las columnas de tipo de datos xml de SQL Server pueden aceptar valores de parámetros del mismo modo que otros tipos de columnas y de datos, como string o integer.

Para obtener más información y código de ejemplo, consulte “Valores XML como parámetros de comando” de la documentación del SDK de Microsoft .NET Framework 2.0.

Consulte también