Udostępnij za pośrednictwem


SqlCommand.ExecuteXmlReader Metoda

Definicja

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.

Dotyczy

Zobacz też