SqlCommand.ExecuteXmlReader Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Envoie l’objet CommandText à l’objet Connection et le génère 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 il a été défini sur Stream. Pour plus d’informations sur la diffusion en continu, consultez Prise en charge de la diffusion en continu SqlClient.
- ou -
Un SqlDbType autre que Char, NChar, NVarChar, VarChar ou Xml a été utilisé quand Value il a été défini sur TextReader.
- ou -
Un SqlDbType autre que Xml a été utilisé lorsqu’il Value a été défini sur XmlReader.
Une exception s’est produite lors de l’exécution de la commande sur une ligne verrouillée. Cette exception n’est pas générée lorsque vous utilisez Microsoft .NET Framework version 1.0.
- ou -
Un délai d’expiration s’est produit pendant une opération de diffusion en continu. Pour plus d’informations sur la diffusion en continu, consultez Prise en charge de la diffusion en continu SqlClient.
SqlConnection Fermé ou supprimé pendant une opération de diffusion en continu. Pour plus d’informations sur la diffusion en continu, consultez Prise en charge de la diffusion en continu SqlClient.
Une erreur s’est produite dans un objet ou XmlReaderTextReader un Streamobjet pendant une opération de diffusion en continu. Pour plus d’informations sur la diffusion en continu, consultez Prise en charge de la diffusion en continu SqlClient.
L’objet ou TextReader l’objet StreamXmlReader a été fermé pendant une opération de diffusion en continu. Pour plus d’informations sur la diffusion en continu, consultez Prise en charge de la diffusion en continu SqlClient.
Exemples
L’exemple suivant crée un SqlCommand élément, puis l’exécute à l’aide ExecuteXmlReaderde . L’exemple est passé une chaîne qui est une instruction FOR XML SELECT Transact-SQL 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
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 vous pouvez é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 xml type de 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 la XmlReader valeur sur la première ligne et ignore le reste du jeu de résultats.
La fonctionnalité MARS (Multiple Active Result Set) permet plusieurs actions à l’aide de la même connexion.
Si vous utilisez ExecuteReader ou BeginExecuteReader pour accéder aux données XML, SQL Server retourne tous les résultats XML supérieurs à 2 033 caractères de longueur dans plusieurs lignes de 2 033 caractères chacun. Pour éviter ce comportement, utilisez ExecuteXmlReader ou BeginExecuteXmlReader lisez des requêtes FOR XML.