Trabalhando com o tipo de dados XML em aplicativos

Este tópico descreve as opções disponíveis para trabalhar com o tipo de dados xml em seus aplicativos. O tópico contém informações sobre o seguinte:

  • Tratando XML de uma coluna de tipo xml usando o ADO e o SQL Server Native Client

  • Tratando XML de uma coluna de tipo xml usando o ADO.NET

  • Tratando tipo xml em parâmetros usando o ADO.NET

Tratando XML de uma coluna de tipo xml usando o ADO e o SQL Server Native Client

Para usar componentes MDAC para acessar os tipos e recursos introduzidos no SQL Server 2005, defina a propriedade de inicialização DataTypeCompatibility na cadeia de conexão do ADO.

Por exemplo, o exemplo a seguir do Visual Basic Scripting Edition (VBScript) mostra os resultados de uma consulta em uma coluna de tipo de dados xml, Demographics, na tabela Sales.Store do banco de dados AdventureWorks2008R2 de exemplo. Especificamente, a consulta procura o valor da instância dessa coluna para a linha em que o CustomerID é igual a 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

Esse exemplo mostra como definir a propriedade de compatibilidade de tipo de dados. Por padrão, isso é definido como 0 ao usar o SQL Server Native Client. Depois de definir o valor como 80, o provedor do SQL Server fará com que as colunas de tipo xml e definidas pelo usuário sejam exibidas como tipos de dados do SQL Server 2000. Esses tipos são DBTYPE_WSTR e DBTYPE_BYTES, respectivamente.

O SQL Server Native Client também deve estar instalado no computador cliente e a cadeia de conexão deve especificá-lo para uso como o provedor de dados com "Provider=SQLNCLI10;...".

Para testar este exemplo

  1. Verifique se o SQL Server Native Client está instalado e se o MDAC 2.6.0 ou posterior está disponível no computador cliente.

    Para obter mais informações, consulte Programação do SQL Server 2008 R2 Native Client.

  2. Verifique se o banco de dados AdventureWorks2008R2 de exemplo no SQL Server está instalado.

    Esse exemplo requer o banco de dados AdventureWorks2008R2 de exemplo. Para obter mais informações, consulte Considerações para instalar exemplos e bancos de dados de exemplo do SQL Server.

  3. Copie o código mostrado anteriormente neste tópico e cole-o em seu editor de texto ou de código. Salve o arquivo como HandlingXmlDataType.vbs.

  4. Modifique o script conforme necessário para sua instalação do SQL Server e salve as alterações.

    Por exemplo, quando MyServer estiver especificado, ele deve ser substituído pelo nome (local) ou real do servidor no qual o SQL Server está instalado.

  5. Execute HandlingXmlDataType.vbs e execute o script.

Os resultados devem ser semelhantes à seguinte saída de exemplo:

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>

Tratando XML de uma coluna de tipo xml usando o ADO.NET

Para tratar XML de uma coluna de tipo de dados xml usando o ADO.NET e o Microsoft .NET Framework você pode usar o comportamento padrão da classe SqlCommand. Por exemplo, uma coluna de tipo de dados xml e seus valores podem ser recuperados da mesma maneira como qualquer coluna SQL é recuperada usando um SqlDataReader. No entanto se você desejar trabalhar com o conteúdo de uma coluna de tipo de dados xml como XML, primeiro precisará atribuir o conteúdo a um tipo XmlReader.

Para obter mais informações e um código de exemplo, consulte "Valores de coluna XML em um Leitor de Dados" na documentação do SDK do Microsoft .NET Framework 2.0.

Tratando uma coluna de tipo xml em parâmetros usando o ADO.NET

Para tratar um tipo de dados xml passado como um parâmetro no ADO.NET e no .NET Framework, é possível fornecer o valor como uma instância do tipo de dados SqlXml. Nenhum tratamento especial está envolvido porque as colunas de tipo de dados xml no SQL Server podem aceitar valores de parâmetros da mesma maneira que outras colunas e tipos de dados, como string ou integer.

Para obter mais informações e o código de exemplo, consulte "Valores XML como parâmetros de comandos" na documentação do SDK do Microsoft .NET Framework 2.0.

Consulte também

Conceitos