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

cs_baby85 Messages postés 79 Date d'inscription mercredi 22 octobre 2008 Statut Membre Dernière intervention 17 juin 2009 - 13 mars 2009 à 00:02
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre 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
   

 

5 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 32
13 mars 2009 à 06:46
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!
0
cs_baby85 Messages postés 79 Date d'inscription mercredi 22 octobre 2008 Statut Membre Dernière intervention 17 juin 2009
13 mars 2009 à 08:34
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
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 51
13 mars 2009 à 17:43
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()) ;
0
raf0077 Messages postés 1 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 31 mars 2010
31 mars 2010 à 15:41
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 51
31 mars 2010 à 16:13
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é. -
0