SqlCommand.ExecuteXmlReader Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Wysyła element CommandText do obiektu Connection i tworzy XmlReader obiekt .
public:
System::Xml::XmlReader ^ ExecuteXmlReader();
public System.Xml.XmlReader ExecuteXmlReader ();
member this.ExecuteXmlReader : unit -> System.Xml.XmlReader
Public Function ExecuteXmlReader () As XmlReader
Zwraca
Obiekt XmlReader.
Wyjątki
Użyto SqlDbType wartości innej niż Binary lub VarBinary , gdy Value ustawiono wartość Stream. Aby uzyskać więcej informacji na temat przesyłania strumieniowego, zobacz Obsługa przesyłania strumieniowego SqlClient.
-lub-
Użyto SqlDbType wartości innej niż Char, NChar, NVarChar, VarChar lub Xml , gdy Value ustawiono wartość TextReader.
-lub-
Element SqlDbType inny niż Xml był używany, gdy Value został ustawiony na XmlReaderwartość .
Wystąpił wyjątek podczas wykonywania polecenia względem zablokowanego wiersza. Ten wyjątek nie jest generowany podczas korzystania z usługi Microsoft .NET Framework w wersji 1.0.
-lub-
Podczas operacji przesyłania strumieniowego wystąpiło przekroczenie limitu czasu. Aby uzyskać więcej informacji na temat przesyłania strumieniowego, zobacz Obsługa przesyłania strumieniowego SqlClient.
Zamknięty SqlConnection lub porzucony podczas operacji przesyłania strumieniowego. Aby uzyskać więcej informacji na temat przesyłania strumieniowego, zobacz Obsługa przesyłania strumieniowego SqlClient.
Wystąpił błąd w StreamXmlReader obiekcie lub TextReader podczas operacji przesyłania strumieniowego. Aby uzyskać więcej informacji na temat przesyłania strumieniowego, zobacz Obsługa przesyłania strumieniowego SqlClient.
XmlReader Obiekt Streamlub TextReader został zamknięty podczas operacji przesyłania strumieniowego. Aby uzyskać więcej informacji na temat przesyłania strumieniowego, zobacz Obsługa przesyłania strumieniowego SqlClient.
Przykłady
Poniższy przykład tworzy obiekt , SqlCommand a następnie wykonuje go przy użyciu polecenia ExecuteXmlReader. Przykład jest przekazywany ciąg, który jest instrukcją Transact-SQL FOR XML SELECT i ciągiem używanym do nawiązywania połączenia ze źródłem danych.
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
Uwagi
Klasa XmlReader zwrócona przez tę metodę nie obsługuje operacji asynchronicznych.
Właściwość CommandText zwykle określa instrukcję Języka Transact-SQL z prawidłową klauzulą FOR XML. CommandText Można jednak również określić instrukcję, która zwraca ntext
lub nvarchar
dane zawierające prawidłowy kod XML lub zawartość kolumny zdefiniowanej za xml
pomocą typu danych.
Typowe ExecuteXmlReader zapytanie można sformatować tak, jak w poniższym przykładzie języka Microsoft Visual C#:
SqlCommand command = new SqlCommand("SELECT * FROM dbo.Customers FOR XML AUTO, XMLDATA", SqlConn);
Ta metoda może służyć również do pobierania jednokolumtowego zestawu wyników zawierającego dane XML. W takim przypadku, jeśli zostanie zwrócony więcej niż jeden wiersz, ExecuteXmlReader metoda dołącza XmlReader wartość do wartości w pierwszym wierszu i odrzuca resztę zestawu wyników.
Funkcja wielu aktywnych zestawów wyników (MARS) umożliwia wykonywanie wielu akcji przy użyciu tego samego połączenia.
Jeśli używasz ExecuteReader funkcji lub BeginExecuteReader do uzyskiwania dostępu do danych XML, SQL Server zwróci wyniki XML większe niż 2033 znaków w wielu wierszach o długości 2033 znaków. Aby uniknąć tego zachowania, użyj polecenia ExecuteXmlReader lub BeginExecuteXmlReader do odczytu dla zapytań XML.