Sdílet prostřednictvím


SqlCommand.ExecuteXmlReader Metoda

Definice

Odešle objekt CommandText a Connection vytvoří XmlReader objekt.

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

Návraty

Objekt XmlReader.

Výjimky

Při SqlDbType nastavení na Stream hodnotu byla použita Value jiná hodnota než Binary nebo VarBinary. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

-nebo-

Při SqlDbType nastavení na TextReader hodnotu se použila Value jiná hodnota než Char, NChar, NVarChar, VarChar nebo XML.

-nebo-

Při SqlDbType nastavení na XmlReader hodnotu byla použita Value jiná hodnota než XML.

Při provádění příkazu na uzamčený řádek došlo k výjimce. Tato výjimka se negeneruje, pokud používáte rozhraní Microsoft .NET Framework verze 1.0.

-nebo-

Během operace streamování došlo k vypršení časového limitu. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Zavřený SqlConnection nebo vynechaný během operace streamování. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Během operace streamování došlo v objektu Stream nebo TextReaderXmlReader k chybě. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Objekt Stream nebo XmlReaderTextReader byl uzavřen během operace streamování. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Příklady

Následující příklad vytvoří a pak ho SqlCommand spustí pomocí ExecuteXmlReader. Příklad je předán řetězec, který je Transact-SQL FOR XML SELECT příkaz, a řetězec, který se má použít pro připojení ke zdroji dat.

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

Poznámky

XmlReader vrácená touto metodou nepodporuje asynchronní operace. Vlastnost CommandText obvykle určuje příkaz Transact-SQL s platnou klauzulí FOR XML. Může však také zadat příkaz, CommandText který vrací ntext nebo nvarchar data, která obsahují platný XML, nebo obsah sloupce definovaného datovým typem xml .

Typický ExecuteXmlReader dotaz lze naformátovat jako v následujícím příkladu Microsoft Visual C#:

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

Tuto metodu lze použít také k načtení jednořádkové sady výsledků s jedním sloupcem, která obsahuje data XML. V tomto případě, pokud je vráceno více než jeden řádek, ExecuteXmlReader metoda připojí XmlReader hodnotu k hodnotě na prvním řádku a zahodí zbytek sady výsledků.

Funkce MARS (Multiple Active Result Set) umožňuje používat více akcí pomocí stejného připojení.

Pokud používáte ExecuteReader data XML nebo BeginExecuteReader k datům XML, vrátí SQL Server všechny výsledky XML delší než 2 033 znaků ve více řádcích po 2 033 znacích. Chcete-li se tomuto chování vyhnout, použijte ExecuteXmlReader nebo BeginExecuteXmlReader ke čtení dotazů FOR XML.

Platí pro