SqlCommand.ExecuteXmlReader Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Отправляет объект CommandTextConnection и создает XmlReader объект.
public:
System::Xml::XmlReader ^ ExecuteXmlReader();
public System.Xml.XmlReader ExecuteXmlReader();
member this.ExecuteXmlReader : unit -> System.Xml.XmlReader
Public Function ExecuteXmlReader () As XmlReader
Возвращаемое значение
Объект XmlReader.
Исключения
Если задано значение Stream"Двоичный" или "VarBinary", используется Value значение "ДвоичныйSqlDbType" или "VarBinary". Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".
–или–
Если SqlDbType задано ValueTextReaderзначение "Char", "NChar", "NVarChar", "VarChar" или "Xml"
–или–
Значение SqlDbType , отличное от xml , использовалось при Value установке XmlReader.
При выполнении команды в заблокированной строке произошло исключение. Это исключение не создается при использовании Microsoft .NET Framework версии 1.0.
–или–
Время ожидания произошло во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".
Закрытый SqlConnection или удаленный во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".
Ошибка произошла в объекте StreamXmlReader или TextReader объекте во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".
XmlReader Объект Streamили TextReader объект был закрыт во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе "Поддержка потоковой передачи SqlClient".
Примеры
В следующем примере создается SqlCommand и выполняется его с помощью ExecuteXmlReader. В этом примере передается строка, которая представляет собой инструкцию FOR XML SELECT Transact-SQL и строку для подключения к источнику данных.
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 или данные, содержащие допустимый XML- или nvarchar содержимое столбца, определенного типом 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.