Compartilhar via


SqlCommand.ExecuteXmlReader Método

Definição

Envia o CommandText para o Connection e cria um objeto XmlReader.

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

Retornos

Um objeto XmlReader.

Exceções

Um SqlDbType diferente de Binary ou VarBinary foi usado quando Value foi definido como Stream. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).

- ou -

Um SqlDbType diferente de Char, NChar, NVarChar, VarChar ou Xml foi usado quando Value foi definido como TextReader.

- ou -

Um SqlDbType diferente de Xml foi usado quando Value foi definido como XmlReader.

Exceção ao executar o comando em uma linha bloqueada. Essa exceção não é gerada quando o Microsoft .NET Framework versão 1.0 é utilizado.

- ou -

Ocorreu um tempo limite durante uma operação de streaming. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).

O SqlConnection foi fechado ou removido durante uma operação de streaming. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).

Ocorreu um erro em um objeto Stream, XmlReader ou TextReader durante uma operação de streaming. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).

O objeto Stream, XmlReader ou TextReader foi fechado durante uma operação de streaming. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).

Exemplos

O exemplo a seguir cria um SqlCommand e o executa usando ExecuteXmlReader. O exemplo é passado uma cadeia de caracteres que é uma instrução TRANSact-SQL FOR XML SELECT e uma cadeia de caracteres a ser usada para se conectar à fonte de dados.

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

Comentários

O XmlReader retornado por esse método não dá suporte a operações assíncronas.

A CommandText propriedade normalmente especifica uma instrução Transact-SQL com uma cláusula FOR XML válida. No entanto, CommandText também pode especificar uma instrução que retorna ntext ou nvarchar dados que contêm XML válido ou o conteúdo de uma coluna definida com o xml tipo de dados.

Uma consulta típica ExecuteXmlReader pode ser formatada como no seguinte exemplo do Microsoft Visual C#:

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

Esse método também pode ser usado para recuperar um conjunto de resultados de coluna única de linha única que contém dados XML. Nesse caso, se mais de uma linha for retornada, o ExecuteXmlReader método anexa o XmlReader ao valor na primeira linha e descarta o restante do conjunto de resultados.

O recurso MARS (conjunto de resultados ativo múltiplo) permite várias ações usando a mesma conexão.

Se você usar ExecuteReader ou BeginExecuteReader acessar dados XML, SQL Server retornará resultados XML maiores que 2.033 caracteres em várias linhas de 2.033 caracteres cada. Para evitar esse comportamento, use ExecuteXmlReader ou BeginExecuteXmlReader leia consultas FOR XML.

Aplica-se a

Confira também