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, использовался объект , отличный от ValueChar, NChar, NVarChar, VarChar или Xml.
-или-
Объект , отличный SqlDbType от XML , использовался, когда Value для параметра задано значение XmlReader.
Возникло исключение при выполнении команды в заблокированной строке. Это исключение не создается при использовании платформы Microsoft .NET Framework версии 1.0.
-или-
Во время операции потоковой передачи истекло время ожидания. Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.
Подключение SqlConnection, закрытое или удаленное во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.
Во время операции потоковой передачи возникла ошибка в объекте Stream, XmlReader или TextReader. Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.
Объект Stream, XmlReader или TextReader был закрыт во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.
Примеры
В следующем примере создается SqlCommand и выполняется с помощью ExecuteXmlReader. В этом примере передается строка, которая является инструкцией SELECT Transact-SQL FOR XML, и строка, используемая для подключения к источнику данных.
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
Комментарии
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.