Recupero di dati come XML da SQL Server

In Microsoft SQL Server 2000 viene introdotto il supporto della funzionalità XML al momento del recupero dei dati. Per consentire la restituzione di un flusso XML direttamente da Microsoft SQL Server 2000, con l'oggetto SqlCommand del provider di dati .NET Framework per SQL Server viene fornito il metodo ExecuteXmlReader. Questo metodo restituisce un oggetto System.Xml.XmlReader compilato con i risultati dell'istruzione SQL specificata per SqlCommand. Per ulteriori informazioni su XmlReader, vedere Classe XmlReader. È possibile utilizzare ExecuteXmlReader solo con un'istruzione che restituisce i risultati come dati XML, quali istruzioni che includono la clausola FOR XML di SQL Server 2000, come illustrato nell'esempio riportato di seguito.

Dim custCMD As SqlCommand = New SqlCommand("SELECT * FROM Customers FOR XML AUTO, ELEMENTS", nwindConn)

Dim myXR As System.Xml.XmlReader = custCMD.ExecuteXmlReader()
[C#]
SqlCommand custCMD = new SqlCommand("SELECT * FROM Customers FOR XML AUTO, ELEMENTS", nwindConn);

System.Xml.XmlReader myXR = custCMD.ExecuteXmlReader();

DataSet può essere utilizzato inoltre per scrivere dati relazionali come XML e può essere sincronizzato con un XmlDataDocument per fornire una visualizzazione relazionale e gerarchica in tempo reale di un singolo insieme di dati nella memoria. Per ulteriori informazioni, vedere Compilazione di un DataSet da un oggetto DataAdapter e XML e l'oggetto DataSet.

Se non sono necessarie visualizzazioni relazionali dei dati in memoria utilizzando DataSet, il metodo ExecuteXmlReader risulta adatto per recuperare dati XML, specialmente dati di notevoli dimensioni. Poiché ExecuteXmlReader è un'API di flusso, non deve recuperare e memorizzare nella cache tutti i dati prima di esporli al chiamante, come succederebbe se DataSet fosse utilizzato per convertire dati relazionali in XML.

Chiusura dell'oggetto XmlReader

È necessario chiamare sempre il metodo Close una volta terminato l'utilizzo dell'oggetto XmlReader. Mentre un oggetto XmlReader è aperto, Connection viene utilizzato esclusivamente da quell'oggetto. Non è quindi possibile eseguire nessun comando per l'oggetto Connection, inclusa la creazione di un altro oggetto XmlReader o DataReader, fino a quando l'oggetto XmlReader originale non viene chiuso.

Vedere anche

Classe SqlCommand | Classe XmlReader | Compilazione di un DataSet da un oggetto DataAdapter | XML e il DataSet