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

Signaler
Messages postés
79
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
17 juin 2009
-
krimog
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
-
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
   

 

5 réponses

Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
27
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!
Messages postés
79
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
17 juin 2009

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
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
31
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()) ;
Messages postés
1
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
31 mars 2010

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
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
31
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é. -