Usare dati XML nelle applicazioni

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

Questo articolo descrive le opzioni disponibili per l'uso del tipo di dati xml nelle applicazioni. In questo articolo vengono fornite informazioni sugli aspetti seguenti:

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

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

  • Gestione del tipo xml nei parametri con ADO.NET

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

Per usare i componenti MDAC e accedere alle funzionalità e ai tipi introdotti in SQL Server 2005 (9.x), è necessario impostare la proprietà di inizializzazione DataTypeCompatibility nella stringa di connessione di ADO.

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

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. Se sir imposta 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 (8.x). Vale a dire: rispettivamente DBTYPE_WSTR e DBTYPE_BYTES.

Nota

SQL Server Native Client (spesso abbreviato SNAC) è stato rimosso da SQL Server 2022 (16.x) e SQL Server Management Studio 19 (SSMS). SQL Server Native Client (SQLNCLI o SQLNCLI11) e il provider Microsoft OLE DB legacy per SQL Server (SQLOLEDB) non sono consigliati per lo sviluppo di nuove applicazioni. Passare al nuovo Microsoft OLE DB Driver (MSOLEDBSQL) per SQL Server o alla versione più recente di Microsoft ODBC Driver for SQL Server. Per SQLNCLI fornito come componente di SQL Server motore di database (versioni da 2012 a 2019), vedere questa eccezione relativa al ciclo di vita del supporto.

Testare l'esempio

  1. Verificare che SQL Server Native Client sia installato e che MDAC 2.6.0 o una versione successiva sia disponibile sul computer client.

    Per altre informazioni, vedere Programmazione in SQL Server Native Client.

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

    Questo esempio richiede il database di esempio AdventureWorks2022 .

  3. Copiare il codice riportato precedentemente in questo articolo 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, quando viene specificato MyServer, va sostituito 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="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>

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

Per gestire dati XML da una colonna di dati di tipo xml tramite ADO.NET e Microsoft .NET Framework è possibile usare il comportamento 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 usando un SqlDataReader. Se tuttavia si vuole usare il contenuto di una colonna con tipo di dati xml come XML, sarà prima necessario assegnarne il contenuto a un tipo XmlReader.

Per altre informazioni e codice di esempio, vedere "Valori delle colonne XML in un lettore di dati" nella documentazione di Microsoft .NET Framework 2.0 SDK.

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 perché 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, ad esempio string o integer.

Per altre informazioni e codice di esempio, vedere "Valori XML come parametri di comando" nella documentazione di Microsoft .NET Framework 2.0 SDK.

Vedi anche