Comment faire pour gérer plusieurs résultats en utilisant l'objet DataReader dans Visual C# .NET

Traductions disponibles Traductions disponibles
Numéro d'article: 311274 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article contient une fonction générique que vous pouvez utiliser pour traiter plusieurs jeux d'enregistrements et d'autres messages qui sont renvoyés de procédures stockées ou l'exécution des instructions SQL par lots.

Description de la technique

(ActiveX Data Objects) pouvez reçoivent cinq différents types de données du serveur :
  • Jeu d'enregistrements
  • Nombre d'enregistrements qui sont modifiés par une requête action (tels que INSERT, UPDATE, DELETE ou SELECT INTO)
  • Message d'information ou avertissement
  • Message d'erreur
  • Procédure stockée renvoient des valeurs et paramètres de sortie
Lorsque vous lisez les résultats d'un lot instruction SQL, vous pouvez utiliser la méthode NextResult pour positionner l' objet DataReader dans le résultat suivant dans le jeu de résultats.

Configuration requise

La liste suivante met en évidence le matériel recommandé, logiciel infrastructure réseau et service packs dont vous avez besoin :
  • Microsoft Windows 2000 Professionnel, Windows 2000 Server, des Windows 2000 Advanced Server ou Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
  • Microsoft SQL Server 7.0 ou version ultérieure
Cet article suppose que vous êtes familiarisé avec les sujets suivants :
  • Visual Studio .NET
  • Notions fondamentales ADO.NET et la syntaxe

Créer un projet et ajouter de code

Ce code exemple utilise la table authors de la Pubs de serveur SQL exemple de base de données.
  1. Collez les instructions suivantes dans l'Analyseur de requêtes SQL outil ou de l'utilitaire ISQL :
    CREATE PROC MyProc
    AS
        SELECT * FROM Authors
        SELECT * FROM Authors WHERE State = 'CA'
    GO 
    					
  2. Démarrez Visual Studio .NET.
  3. Créez un projet d'application Windows nouveau dans Visual C# .NET. Form1 est ajouté au projet par défaut.
  4. Vérifiez que que votre projet contient une référence à l'espace de noms System.Data et ajoutez une référence à cet espace de noms si ce n'est pas le cas.
  5. Placez un bouton de commande sur Form1. Modifier la propriété Name du bouton à btnTest et modifiez la propriété à test .
  6. Utilisez l'instruction using sur les espaces de noms System , System.Data.OLEDB et System.Data.SqlClient afin qu'il ne soit pas nécessaire de qualifier les déclarations dans les espaces de noms plus loin dans votre code. Ajoutez le code suivant à la section Déclarations générales de Form1 :
    using System;
    using System.Data.OleDb;
    using System.Data.SqlClient;
    					
  7. Ajoutez le code suivant à l'événement btnTest_Click :

    note Vous devez modifier la valeur de compte utilisateur ID < nom utilisateur > à un compte possédant les autorisations appropriées pour effectuer ces opérations sur la base de données.
        String myConnString  = "User ID=<username>;password=<strong password>;Initial Catalog=pubs;Data Source=myServer";
        SqlConnection myConnection = new SqlConnection(myConnString);
        SqlCommand myCommand = new SqlCommand();
        SqlDataReader myReader ;
    
        myCommand.CommandType = CommandType.StoredProcedure;
        myCommand.Connection = myConnection;
        myCommand.CommandText = "MyProc";
        int RecordCount=0; 
    
        try
        {
            myConnection.Open();
    	myReader = myCommand.ExecuteReader();
    
    	while (myReader.Read())
    	{
     	    //Write logic to process data for the first result.
    	    RecordCount = RecordCount + 1;
    	}
    	MessageBox.Show("Total number of Authors: " + RecordCount.ToString());
    
    	myReader.NextResult();
    	RecordCount = 0;
    
    	while (myReader.Read())
    	{
    	    //Write logic to process data for the second result.
    	    RecordCount = RecordCount + 1;
    	}
    	MessageBox.Show("Authors from California: " + RecordCount.ToString());
        }
        catch(Exception ex) 
        {
           MessageBox.Show(ex.ToString());
        }
        finally
        {
    	myConnection.Close();
        }
    					
  8. Modifier la chaîne de connexion ( myConnString ) en fonction de votre environnement.
  9. Enregistrer votre projet. Dans le menu Déboguer , cliquez sur Démarrer pour exécuter votre projet.
  10. Cliquez sur test . Notez que les zones de messages affichent les données la procédure stockée renvoie.

Références

Pour plus d'informations sur l'appel de procédures stockées, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
306574 Comment faire pour appeler SQL Server de procédures stockées dans ASP.NET
Pour plus d'informations sur la gestion des erreurs, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
308650 Comment faire pour obtenir les erreurs sous-jacentes du fournisseur à l'aide de Visual C# .NET d'ADO.NET
Pour plus d'informations sur les paramètres et les procédures stockées, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
308621 MODÈLE : les paramètres de sortie sont retournées pas lorsque vous exécutez une commande d'ADO.NET dans Visual C# .NET
Pour plus d'informations sur les objets ADO.NET et la syntaxe, consulter le suivant Microsoft .NET Framework Software Development Kit (SDK) documentation :
Accès aux données avec ADO.NET
http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx

Propriétés

Numéro d'article: 311274 - Dernière mise à jour: dimanche 13 mai 2007 - Version: 3.4
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2002 Initiation
  • Microsoft Visual C# .NET 2003 Initiation
Mots-clés : 
kbmt kbhowtomaster kbsqlclient kbsystemdata KB311274 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 311274
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com