Condividi tramite


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

È stato usato un valore SqlDbType diverso da Binary o VarBinary quando Value era 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-

È stato usato un valore SqlDbType diverso da Xml quando Value era 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.

Errore nell'oggetto Stream, XmlReader o TextReader durante un'operazione di flusso. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

L'oggetto Stream, XmlReader o TextReader è stato chiuso durante l'operazione di flusso. 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. L'esempio viene passata una stringa che rappresenta un'istruzione Transact-SQL FOR XML SELECT e una stringa da usare per connettersi all'origine dati.

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();
    }
}
Public Sub CreateXMLReader(ByVal queryString As String, _
    ByVal connectionString As String)

    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As New SqlCommand(queryString, connection)
        Dim reader As System.Xml.XmlReader = command.ExecuteXmlReader
    End Using
End Sub

Commenti

XmlReader restituito da questo metodo non supporta operazioni asincrone.

La CommandText proprietà specifica normalmente un'istruzione Transact-SQL con una clausola FOR XML valida. Tuttavia, CommandText può anche specificare un'istruzione che restituisce ntext o nvarchar dati contenenti XML validi 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 usato anche per recuperare un set di risultati a singola riga e a colonna singola che contiene dati XML. In questo caso, se vengono restituite più righe, il ExecuteXmlReader metodo associa il XmlReader valore al valore della prima riga ed elimina il resto del set di risultati.

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

Se si usa ExecuteReader o BeginExecuteReader si accede ai dati XML, SQL Server restituirà i risultati XML superiori a 2.033 caratteri in lunghezza in più righe di 2.033 caratteri ciascuno. Per evitare questo comportamento, usare ExecuteXmlReader o BeginExecuteXmlReader leggere query FOR XML.

Si applica a

Vedi anche