SqlCommand.ExecuteXmlReader Метод

Определение

Отправляет CommandText в Connection и строит объект XmlReader.

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

Возвращаемое значение

Объект XmlReader.

Исключения

Если SqlDbType для параметра задано значение Stream , отличное от Binary или VarBinary, использовался Value . Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.

-или-

Если SqlDbType для параметра задано значение TextReader , кроме Char, NChar, NVarChar, VarChar или Xml, использовался Value объект , отличный от Char, NChar, NVarChar, VarChar или Xml.

-или-

Объект , отличный SqlDbType от XML , использовался, когда Value для параметра задано значение XmlReader .

Возникло исключение при выполнении команды в заблокированной строке. Это исключение не создается при использовании платформы Microsoft .NET Framework версии 1.0.

-или-

Во время операции потоковой передачи истекло время ожидания. Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.

Подключение SqlConnection, закрытое или удаленное во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.

Ошибка в объекте Stream или XmlReaderTextReader во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.

Объект Stream или XmlReaderTextReader был закрыт во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.

Примеры

В следующем примере создается SqlCommand и выполняется с помощью ExecuteXmlReader. В этом примере передается строка, которая является инструкцией SELECT Transact-SQL FOR XML, и строка, используемая для подключения к источнику данных.

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();
    }
}

Комментарии

XmlReader, возвращаемый этим методом, не поддерживает асинхронные операции. Свойство CommandText обычно задает инструкцию Transact-SQL с допустимым предложением FOR XML. Однако может также указать оператор, CommandText который возвращает ntext или nvarchar данные, содержащие допустимый XML, или содержимое столбца, определенного с типом xml данных .

Типичный ExecuteXmlReader запрос может быть отформатирован в следующем примере Microsoft Visual C#:

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

Этот метод также можно использовать для получения однострочного результирующий набор с одним столбцом, который содержит XML-данные. В этом случае, если возвращается несколько строк, ExecuteXmlReader метод прикрепляет XmlReader к значению в первой строке и удаляет остальную часть результированного набора.

Функция множественных активных результирующих наборов (MARS) позволяет выполнять несколько действий, использующих одно и то же подключение.

Если вы используете ExecuteReader или BeginExecuteReader для доступа к XML-данным, SQL Server вернет все результаты XML длиной более 2033 символов в нескольких строках по 2033 символа каждый. Чтобы избежать такого поведения, используйте ExecuteXmlReader или BeginExecuteXmlReader для чтения запросов FOR XML.

Применяется к