Recuperation de résultat de select en sql server an c#

Messages postés
79
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
17 juin 2009
- - Dernière réponse : krimog
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
- 31 mars 2010 à 16:13
bonsoir,
je veux récupérer le résultat d'une requête select de type string et l'afficher dans un Messagebox

           string req = "select  nom from tableau where (num='" + 2 + "')";
            SqlConnection connection = new SqlConnection(connectionString);
            SqlCommand oCommand = new SqlCommand(req, connection);
            connection.Open();
            oCommand.CommandText = select  nom from tableau where (num='" + 2 + "')";

            string f = (string)oCommand.ToString();
            MessageBox.Show(f);
        il affiche dans le msgbox system.data.sqlclient.sqlcommand
Merci d'avance
   

 
Afficher la suite 

5 réponses

Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
26
0
Merci
Bonjour,

Pour récuperer le résultat d'une requête, il faut tout d'abord l'éxécuter.
il existe plusieurs manières d'executer une requête, mais si tu es certain qu'elle ne retourne qu'une ligne utilise "ExecuteScalar"

   object returnedData = oCommand.ExecuteScalar();

   string f = returnedData.ToString();
   MessageBox.Show(f);Si non, tu peux récuperer les resultats dans une "reader"
   SqlDataReader myReader = oCommand.ExecuteReader();

Cordialement.

C# is amazing, enjoy it!
Commenter la réponse de cs_Robert33
Messages postés
79
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
17 juin 2009
0
Merci
bonjour,
lorsque je excécuté le programme avec .ExecuteScalar() il affiche une message d'erreur au niveau

string f = returnedData.ToString();
le message est :

La référence d'objet n'est pas définie à une instance d'un objet.
Merci pour votre réponse
Commenter la réponse de cs_baby85
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
30
0
Merci
Salut
"La référence d'objet n'est pas définie à une instance d'un objet." indique qu'un objet dans lequel tu cherches à accéder à une méthode ou à une propriété est null.
En l'occurence, il s'agit là de returnedData, qui a la valeur null.
S'il est null, c'est certainement que ta requête n'a rien retourné.

Au fait, ta ligne "oCommand.CommandText = select  nom from tableau where (num='" + 2 + "')";" est évidemment à supprimer, puisque tu initialise la commande lors de l'instanciation de l'objet (constructeur)

Au niveau de ta requete, si "num" est un int, ne met pas d'apostrophe, et les parenthèses ne sont pas obligatoires
> "select nom from tableau where num" + 2 + ""

Krimog :
while (!succeed = try()) ;
Commenter la réponse de krimog
Messages postés
1
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
31 mars 2010
0
Merci
Salut
Je sollicite votre aide pour mon projet
Mon problème est que je doit récupérer plusieurs colonnes sous des conditionnes inscrites dans des texte box, comme « ExecuteScalar() » marche avec une seul ligne.
Merci d’avance
Commenter la réponse de raf0077
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
30
0
Merci
Salut raf0077.

Si tu veux récupérer plusieurs champs ou plusieurs entrées, il faut utiliser un SqlDataReader :

SqlDataReader reader = oCommand.ExecuteReader();
while(reader.Read())
{
// Il va rentrer dans la boucle à chaque entrée renvoyée par ta requete
// Ensuite, tu lis les différents champs ainsi :
string maValeur = reader["NomDuChamp"].ToString();
int maValeur2 = Convert.ToInt32(reader["NomDuChamp2"]);
}
reader.Close();

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