SqlCommand.ExecuteXmlReader Metódus

Definíció

Elküldi az CommandText objektumot, Connection és létrehoz egy objektumot XmlReader .

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

Válaszok

Egy XmlReader objektum.

Kivételek

A SqlDbTypebináristól vagy a VarBinarytól eltérő függvényt használt a rendszer, amikor Value a beállítás értéke Stream. A streamelésről további információt az SqlClient streamelési támogatásában talál.

-vagy-

A SqlDbTypechar, NChar, NVarChar, VarChar vagy Xml kivételével más is használható volt a beállításnál ValueTextReader.

-vagy-

Az SqlDbTypeXml-fájltól eltérő érték lett használva a ValuebeállításkorXmlReader.

Kivétel történt a parancs zárolt soron való végrehajtása során. Ez a kivétel nem jön létre Microsoft .NET Framework 1.0-s verziójának használatakor.

-vagy-

Időtúllépés történt egy streamelési művelet során. A streamelésről további információt az SqlClient streamelési támogatásában talál.

A SqlConnection streamelési művelet során bezárt vagy elvetett. A streamelésről további információt az SqlClient streamelési támogatásában talál.

Hiba történt egy Stream, XmlReader vagy TextReader objektumban egy streamelési művelet során. A streamelésről további információt az SqlClient streamelési támogatásában talál.

Az Stream, XmlReader vagy TextReader objektum egy streamelési művelet során lett bezárva. A streamelésről további információt az SqlClient streamelési támogatásában talál.

Példák

Az alábbi példa létrehoz egy SqlCommand , majd végrehajtja azt a használatával ExecuteXmlReader. A példa egy Transact-SQL XML SELECT utasítást tartalmazó sztringet, valamint egy olyan sztringet ad át, amely az adatforráshoz való csatlakozáshoz használható.

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

Megjegyzések

A metódus által visszaadott XmlReader nem támogatja az aszinkron műveleteket.

A CommandText tulajdonság általában egy érvényes FOR XML záradékkal rendelkező Transact-SQL utasítást ad meg. Megadhat azonban olyan utasítást is, CommandText amely érvényes XML-t vagy ntext adattípussal nvarchar definiált oszlop tartalmát ad vissza xml vagy tartalmaz.

Egy tipikus ExecuteXmlReader lekérdezés a következő Microsoft Visual C#-példa szerint formázható:

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

Ez a módszer egy xml-adatokat tartalmazó egysoros, egyoszlopos eredménykészlet lekérésére is használható. Ebben az esetben, ha egynél több sort ad vissza, a ExecuteXmlReader metódus az első sor értékét csatolja XmlReader , és elveti az eredményhalmaz többi részét.

A több aktív eredményhalmaz (MARS) funkció több műveletet is lehetővé tesz ugyanazzal a kapcsolattal.

Ha ExecuteReader vagy BeginExecuteReader használatával fér hozzá az XML-adatokhoz, SQL Server minden 2033 karakternél hosszabb XML-eredményt ad vissza 2033 karakternél hosszabb sorokban, egyenként 2033 karakter hosszúságú sorokban. Ennek a viselkedésnek a elkerülése érdekében használja ExecuteXmlReader vagy BeginExecuteXmlReader olvassa el a FOR XML-lekérdezéseket.

A következőre érvényes:

Lásd még