Partager via


SqlCommand.ExecuteXmlReader Méthode

Définition

Envoie CommandText à Connection et génère un objet XmlReader.

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

Retours

Objet XmlReader.

Exceptions

Un SqlDbType autre que Binary ou VarBinary a été utilisé quand Value avait la valeur Stream. Pour plus d’informations sur le streaming, consultez Prise en charge du streaming pour SqlClient.

- ou -

Autre SqlDbType que Char, NChar, NVarChar, VarChar ou Xml a été utilisé lorsque Value a été défini sur TextReader.

- ou -

Un SqlDbType autre que Xml a été utilisé quand Value avait la valeur XmlReader.

Une exception s’est produite pendant l’exécution de la commande sur une ligne verrouillée. Cette exception n’est pas générée quand vous utilisez Microsoft .NET Framework version 1.0.

- ou -

Un délai d’attente a été dépassé pendant une opération de diffusion en continu. Pour plus d’informations sur le streaming, consultez Prise en charge du streaming pour SqlClient.

La SqlConnection a été fermée ou supprimée pendant une opération de diffusion en continu. Pour plus d’informations sur le streaming, consultez Prise en charge du streaming pour SqlClient.

Une erreur s’est produite dans un objet Stream, XmlReader ou TextReader pendant une opération de diffusion en continu. Pour plus d’informations sur le streaming, consultez Prise en charge du streaming pour SqlClient.

L’objet Stream, XmlReader ou TextReader a été fermé pendant une opération de diffusion en continu. Pour plus d’informations sur le streaming, consultez Prise en charge du streaming pour SqlClient.

Exemples

L’exemple suivant crée un SqlCommand , puis l’exécute à l’aide de ExecuteXmlReader. L’exemple est passé une chaîne qui est une instruction Transact-SQL FOR XML SELECT et une chaîne à utiliser pour se connecter à la source de données.

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

Remarques

Le XmlReader retourné par cette méthode ne prend pas en charge les opérations asynchrones.

La CommandText propriété spécifie généralement une instruction Transact-SQL avec une clause FOR XML valide. Toutefois, CommandText peut également spécifier une instruction qui retourne ntext ou nvarchar des données qui contiennent du code XML valide, ou le contenu d’une colonne définie avec le type de xml données.

Une requête classique ExecuteXmlReader peut être mise en forme comme dans l’exemple Microsoft Visual C# suivant :

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

Cette méthode peut également être utilisée pour récupérer un jeu de résultats à une seule ligne et à colonne unique qui contient des données XML. Dans ce cas, si plusieurs lignes sont retournées, la ExecuteXmlReader méthode attache le XmlReader à la valeur de la première ligne et ignore le reste du jeu de résultats.

La fonctionnalité MARS (Multiple Active Result Set) permet d’effectuer plusieurs actions à l’aide de la même connexion.

Si vous utilisez ExecuteReader ou BeginExecuteReader pour accéder à des données XML, SQL Server retourne les résultats XML d’une longueur supérieure à 2 033 caractères dans plusieurs lignes de 2 033 caractères chacune. Pour éviter ce comportement, utilisez ExecuteXmlReader ou BeginExecuteXmlReader pour lire des requêtes FOR XML.

S’applique à

Voir aussi