Share via


SqlCommand.ExecuteXmlReader Metodo

Definizione

Invia la proprietà CommandText alla proprietà Connection e compila un oggetto XmlReader.

public:
 System::Xml::XmlReader ^ ExecuteXmlReader();
public System.Xml.XmlReader ExecuteXmlReader ();
member this.ExecuteXmlReader : unit -> System.Xml.XmlReader
Public Function ExecuteXmlReader () As XmlReader

Restituisce

Oggetto XmlReader.

Eccezioni

Un SqlDbType oggetto diverso da Binary o VarBinary è stato usato quando Value è stato impostato su Stream . Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

-oppure-

Un SqlDbType oggetto diverso da Char, NChar, NVarChar, VarChar o Xml è stato usato quando Value è stato impostato su TextReader .

-oppure-

È SqlDbType stato utilizzato un valore diverso da Xml quando Value è stato impostato su XmlReader .

È stata generata un'eccezione durante l'esecuzione del comando su una riga bloccata. Tale eccezione non viene generata quando si usa Microsoft .NET Framework Versione 1.0.

-oppure-

Si è verificato un timeout durante un'operazione di flusso. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

L'elemento SqlConnection chiuso o eliminato durante l'operazione di flusso. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

Si è verificato un errore in un Stream oggetto o XmlReaderTextReader durante un'operazione di streaming. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

L'oggetto Stream o XmlReaderTextReader è stato chiuso durante un'operazione di streaming. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

Esempio

Nell'esempio seguente viene creato un oggetto SqlCommand e quindi viene eseguito usando ExecuteXmlReader. Nell'esempio viene passata una stringa che è un'istruzione Transact-SQL FOR XML SELECT e una stringa da usare per connettersi all'origine dati.

using System;
using System.Data;
using Microsoft.Data.SqlClient;

private static void CreateXMLReader(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        connection.Open();
        SqlCommand command = new SqlCommand(queryString, connection);
        System.Xml.XmlReader reader = command.ExecuteXmlReader();
    }
}

Commenti

XmlReader restituito da questo metodo non supporta le operazioni asincrone. La CommandText proprietà specifica in genere un'istruzione Transact-SQL con una clausola FOR XML valida. Tuttavia, CommandText può anche specificare un'istruzione che restituisce ntext o nvarchar dati che contengono codice XML valido o il contenuto di una colonna definita con il xml tipo di dati .

Una query tipica ExecuteXmlReader può essere formattata come nell'esempio di Microsoft Visual C# seguente:

SqlCommand command = new SqlCommand("SELECT * FROM dbo.Customers FOR XML AUTO, XMLDATA", SqlConn);

Questo metodo può essere utilizzato anche per recuperare un set di risultati a riga singola e a colonna singola che contiene dati XML. In questo caso, se vengono restituite più righe, il ExecuteXmlReader metodo associa l'oggetto XmlReader al valore nella prima riga e rimuove il resto del set di risultati.

La funzionalità mars (Multiple Active Result Set) consente più azioni usando la stessa connessione.

Se si utilizza ExecuteReader o BeginExecuteReader per accedere ai dati XML, SQL Server restituirà risultati XML maggiori di 2.033 caratteri in più righe di 2.033 caratteri ciascuno. Per evitare questo comportamento, utilizzare ExecuteXmlReader o BeginExecuteXmlReader per leggere le query FOR XML.

Si applica a