Trabajar con el tipo de datos XML en aplicaciones

En este tema se describen las opciones que están disponibles para trabajar con tipos de datos xml en una aplicación. El tema 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, 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 AdventureWorks. 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 = "AdventureWorks"

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

CommandText = "SELECT Demographics" & _
              " FROM Sales.Store" & _
              " WHERE CustomerID = 3" & _
              " OR 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

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. Después de establecer 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. Serán DBTYPE_WSTR y DBTYPE_BYTES, respectivamente.

SQL Server Native Client también debe estar instalado en el equipo cliente y la cadena de conexión debe especificar que se use como proveedor de datos con "Provider=SQLNCLI10;...".

Para probar este ejemplo

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

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

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

    Este ejemplo requiere la base de datos de ejemplo AdventureWorks. Para obtener más información, vea Consideraciones para instalar ejemplos y bases de datos de ejemplo de SQL Server.

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

  4. Modifique la secuencia de comandos según sea necesario por 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 la secuencia de comandos.

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

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>

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

Para controlar XML desde una columna de tipo de datos xml utilizando ADO.NET y Microsoft.NET Framework, puede utilizar 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 una clase 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, vea el artículo sobre valores de columnas XML en un lector de datos, incluido en 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 proporcionar el valor como una instancia del tipo de datos SqlXml. No es necesario realizar 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, por ejemplo, string o integer.

Para obtener más información y código de ejemplo, vea el artículo sobre valores XML como parámetros de comando incluido en la documentación del SDK de Microsoft.NET Framework 2.0.

Vea también

Conceptos