Utilizzo del tipo di dati XML nelle applicazioni

In questo argomento vengono descritte le opzioni disponibili per l'utilizzo del tipo di dati xml nelle applicazioni. Vengono fornite informazioni sugli aspetti seguenti:

  • Gestione di dati XML da una colonna di tipo xml utilizzando ADO e SQL Server Native Client

  • Gestione di dati XML da una colonna di tipo xml utilizzando ADO.NET

  • Gestione del tipo xml nei parametri utilizzando ADO.NET

Gestione di XML da una colonna di tipo xml utilizzando ADO e SQL Server Native Client

Per utilizzare i componenti MDAC e accedere alle caratteristiche e ai tipi introdotti in SQL Server 2005, è necessario impostare la proprietà di inizializzazione DataTypeCompatibility nella stringa di connessione di ADO.

Nel seguente esempio di codice Visual Basic Scripting Edition (VBScript) vengono illustrati i risultati di una query su una colonna di dati di tipo xml, Demographics, contenuta nella tabella Sales.Store del database di esempio AdventureWorks2008R2. Questa particolare query cerca il valore di istanza della colonna per la riga dove CustomerID è uguale 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

Questo esempio illustra come impostare la proprietà di compatibilità del tipo di dati. Per impostazione predefinita, questa proprietà è impostata su 0 quando si utilizza SQL Server Native Client. Dopo aver impostato il valore su 80, il provider SQL Server Native Client fa in modo che le colonne di tipo xml e di tipo definito dall'utente appaiano come tipi di dati SQL Server 2000. Vale a dire: rispettivamente DBTYPE_WSTR e DBTYPE_BYTES.

Sul computer client deve essere installato anche SQL Server Native Client e nella stringa di connessione è necessario specificare che venga utilizzato come provider di dati tramite "Provider=SQLNCLI10;...".

Per testare l'esempio

  1. Verificare che SQL Server Native Client sia installato e che MDAC 2 versione 6.0, o una versione successiva, sia installato sul computer client.

    Per ulteriori informazioni, vedere Programmazione di SQL Server 2008 R2 Native Client.

  2. Verificare che il database di esempio AdventureWorks2008R2 in SQL Server sia installato.

    Questo esempio richiede il database di esempio AdventureWorks2008R2. Per ulteriori informazioni, vedere Considerazioni per l'installazione di esempi e di database di esempio di SQL Server.

  3. Copiare il codice riportato precedentemente in questo argomento nel proprio editor di testo o di codice. Salvare il file col nome HandlingXmlDataType.vbs.

  4. Modificare lo script come necessario per l'installazione di SQL Server e salvare le modifiche.

    Ad esempio, la stringa MyServer va sostituita con (local) o con il nome effettivo del server sul quale è installato SQL Server.

  5. Eseguire HandlingXmlDataType.vbs e lo script.

Si dovrebbe ottenere un risultato simile a quello riportato di seguito:

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>

Gestione di dati XML da una colonna di tipo xml utilizzando ADO.NET

Per gestire dati XML da una colonna di dati di tipo xml tramite ADO.NET e Microsoft .NET Framework è possibile utilizzare il funzionamento standard della classe SqlCommand. Ad esempio, una colonna con tipo di dati xml e i suoi valori possono essere recuperati in modo analogo a qualsiasi colonna SQL utilizzando un SqlDataReader. Tuttavia , se si desidera utilizzare il contenuto di una colonna con tipo di dati xml come XML, sarà anzitutto necessario assegnarne il contenuto a un tipo XmlReader.

Per ulteriori informazioni e codice di esempio, vedere "XML Column Values in a Data Reader" nella documentazione sull'SDK Microsoft .NET Framework 2.0 (informazioni in lingua inglese).

Gestione di una colonna di tipo xml in parametri utilizzando ADO.NET

Per gestire un tipo di dati xml passato come parametro in ADO.NET e .NET Framework, è possibile specificare il valore come un'istanza del tipo di dati SqlXml. Non è necessaria una gestione particolare in quanto le colonne di tipo di dati xml in SQL Server possono accettare valori di parametro in modo analogo ad altre colonne e tipi di dati, come ad esempio string o integer.

Per ulteriori informazioni e codice di esempio, vedere "XML Values as Command Parameters" nella documentazione sull'SDK Microsoft .NET Framework 2.0 (informazioni in lingua inglese).

Vedere anche

Concetti