[VS2010] [C#] Parcourir résultat requête SQL [Résolu]

Messages postés
4
Date d'inscription
lundi 21 mars 2011
Dernière intervention
5 janvier 2017
- 5 avril 2011 à 08:56 - Dernière réponse :
Messages postés
4
Date d'inscription
lundi 21 mars 2011
Dernière intervention
5 janvier 2017
- 5 avril 2011 à 11:29
Bonjour à tous,

J'expose mon problème.
Je suis entrain de réaliser une application en C# qui permet de se connecter à une base de données et exécuter une requête SQL stocké.

Le problème que j'ai, c'est pour récupérer le résultat de cette requête dans des variables.

Sous DOS, le résultat de ma requête est formaté comme tel :
Nom : xxxxx
Prénom : xxxxx
Adresse : xxxxxxxxxxxxxx
...



Voici mon bout de code correspondant :

private void button1_Click(object sender, EventArgs e)
        {
            
            String requete_generer = "SELECT ... FROM ...";
            if (OConnexion !null && OConnexion.State ConnectionState.Open)
            {
                OracleCommand cmd = new OracleCommand(requete_generer, OConnexion);
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = requete_generer;
                String resultatString = Convert.ToString(cmd.ExecuteScalar());

            }
        }


Voilà, donc si quelqu'un peut me donner la main pour m'expliquer comment parcourir ce résultat de requête ligne par ligne et stocker dans des variables uniquement les données qui m'intéresse (en outre les "xxxxx"), ce serait magnifique.

Merci d'avance à tous ceux qui passeront sur ce sujet.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
5 avril 2011 à 10:46
3
Merci
Salut

La méthode ExecuteScalar() ne renvoie que le premier champ de la première ligne renvoyée par la requête.

Tu dois utiliser la méthode ExecuteReader(). Celle-ci te renvoie un objet de type SqlDataReader (ou en l'occurrence, probablement OracleDataReader). Depuis cet objet, tu appelles la méthode Read() qui passe à la ligne suivante dans le résultat de ta requête. Read() renvoie true s'il reste des lignes, false sinon.

Une fois que tu as fais Read(), tu peux accéder aux champs directement avec monObjet["MonChamp"].ToString() ou monObjet[0].ToString() pour accéder au premier champ.

OracleDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
    // Tu fais ce que tu veux avec Reader["NomDuChamp"]
    // ou reader[indiceDuChamp]
}


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -

Merci krimog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de krimog
Messages postés
4
Date d'inscription
lundi 21 mars 2011
Dernière intervention
5 janvier 2017
5 avril 2011 à 11:29
0
Merci
Merci beaucoup krimog,

Effectivement l'ExecuteReader fonctionne mieux dans mon cas que l'ExecuteScalar ;). Je viens de tester, ça fonctionne parfaitement.

Encore merci, on peut clore le thread.
Commenter la réponse de sprpxl13

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.