SqlCommand.ExecuteXmlReader Método

Definição

Envia o CommandText para o Connection e cria um objeto XmlReader.Sends the CommandText to the Connection and builds an XmlReader object.

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

Retornos

XmlReader

Um objeto XmlReader.An XmlReader object.

Exceções

Um SqlDbType diferente de Binary ou varbinary foi usado quando Value foi definido como Stream .A SqlDbType other than Binary or VarBinary was used when Value was set to Stream. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).For more information about streaming, see SqlClient Streaming Support.

- ou --or-

Um SqlDbType diferente de Char, nchar, nvarchar, varchar ou XML foi usado quando Value foi definido como TextReader .A SqlDbType other than Char, NChar, NVarChar, VarChar, or Xml was used when Value was set to TextReader.

- ou --or-

Um SqlDbType diferente de Xml foi usado quando Value foi definido como XmlReader.A SqlDbType other than Xml was used when Value was set to XmlReader.

Exceção ao executar o comando em uma linha bloqueada.An exception occurred while executing the command against a locked row. Essa exceção não é gerada quando o Microsoft .NET Framework versão 1.0 é utilizado.This exception is not generated when you are using Microsoft .NET Framework version 1.0.

- ou --or-

Ocorreu um tempo limite durante uma operação de streaming.A timeout occurred during a streaming operation. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).For more information about streaming, see SqlClient Streaming Support.

O SqlConnection foi fechado ou removido durante uma operação de streaming.The SqlConnection closed or dropped during a streaming operation. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).For more information about streaming, see SqlClient Streaming Support.

Ocorreu um erro em um objeto Stream, XmlReader ou TextReader durante uma operação de streaming.An error occurred in a Stream, XmlReader or TextReader object during a streaming operation. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).For more information about streaming, see SqlClient Streaming Support.

O objeto Stream, XmlReader ou TextReader foi fechado durante uma operação de streaming.The Stream, XmlReader or TextReader object was closed during a streaming operation. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).For more information about streaming, see SqlClient Streaming Support.

Exemplos

O exemplo a seguir cria um SqlCommand e, em seguida, executa-o usando ExecuteXmlReader .The following example creates a SqlCommand and then executes it using ExecuteXmlReader. O exemplo é passado uma cadeia de caracteres que é uma instrução SELECT do Transact-SQL FOR XML e uma cadeia de caracteres a ser usada para se conectar à fonte de dados.The example is passed a string that is a Transact-SQL FOR XML SELECT statement, and a string to use to connect to the data source.

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 este método não oferece suporte a operações assíncronas.The XmlReader returned by this method does not support asynchronous operations.

A CommandText propriedade normalmente especifica uma instrução Transact-SQL com uma cláusula for XML válida.The CommandText property ordinarily specifies a Transact-SQL statement with a valid FOR XML clause. No entanto, CommandText também pode especificar uma instrução que retorna ntext ou nvarchar dados que contenham XML válido ou o conteúdo de uma coluna definida com o xml tipo de dados.However, CommandText can also specify a statement that returns ntext or nvarchar data that contains valid XML, or the contents of a column defined with the xml data type.

Uma ExecuteXmlReader consulta típica pode ser formatada como no seguinte exemplo do Microsoft Visual C#:A typical ExecuteXmlReader query can be formatted as in the following Microsoft Visual C# example:

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 linha única, de uma coluna que contém dados XML.This method can also be used to retrieve a single-row, single-column result set that contains XML data. Nesse caso, se mais de uma linha for retornada, o ExecuteXmlReader método anexará o XmlReader ao valor na primeira linha e descartará o restante do conjunto de resultados.In this case, if more than one row is returned, the ExecuteXmlReader method attaches the XmlReader to the value on the first row, and discards the rest of the result set.

O recurso MARS (vários conjuntos de resultados ativos) permite várias ações usando a mesma conexão.The multiple active result set (MARS) feature allows for multiple actions using the same connection.

Se você usar ExecuteReader ou BeginExecuteReader para acessar dados xml, SQL Server retornará quaisquer resultados XML com mais de 2.033 caracteres de comprimento em várias linhas de 2.033 caracteres cada.If you use ExecuteReader or BeginExecuteReader to access XML data, SQL Server will return any XML results greater than 2,033 characters in length in multiple rows of 2,033 characters each. Para evitar esse comportamento, use ExecuteXmlReader ou BeginExecuteXmlReader para ler consultas for XML.To avoid this behavior, use ExecuteXmlReader or BeginExecuteXmlReader to read FOR XML queries.

Aplica-se a