SqlCommand.ExecuteXmlReader Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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.