Recuperer le resultat d'une select en c# [Résolu]

cs_baby85 79 Messages postés mercredi 22 octobre 2008Date d'inscription 17 juin 2009 Dernière intervention - 1 avril 2009 à 20:21 - Dernière réponse : aminescm 7 Messages postés mercredi 19 octobre 2011Date d'inscription 9 mai 2012 Dernière intervention
- 3 mars 2012 à 02:00
salut,
j ai un  probleme lorsque je veux recuperer le resultat d'une requete select en c# mais quand je veux utiliser le resultat de select dans une autre methode il affiche une message d'erreur
j ai fais comme ca
            string nz = equi.zoneChangement();//cette methode retourne le resultat d'une select de type string
            double dsz = equi.selection(nz);//cette methode a pour variable d'entrée string
il affiche une message d'erreur

Le format de la chaîne d'entrée est incorrect au  niveau de cette methde selection sachant lorsque j 'execute la methde avec une chaine de caratere il affiche le resultat vrai
public string zoneChangement()
{            string requete1 = "select distinct(Num) from table where Num !='"+0+"' ";
            SqlConnection connection = new SqlConnection(connectionString);
            SqlCommand oCommand = new SqlCommand(requete1, connection);
            connection.Open();
            int h = 0;
            SqlDataReader reader1 = oCommand.ExecuteReader();
            while (reader1.Read())
            {
                string result1 = reader1["Num"].ToString();
                string res1_doub = Convert.ToString(result1);
                tabnum[h] = res1_doub;
                h++;
            }
return(tabnum[3]);
 }
le type de colonne dans la base des données est char[10]
Merci d'avance
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_Malkuth 278 Messages postés samedi 22 février 2003Date d'inscription 24 avril 2013 Dernière intervention - 1 avril 2009 à 22:25
1
Merci
je comprend pas trop ou tu veux en venir ici :
                string result1 = reader1["Num"].ToString();
                string res1_doub = Convert.ToString(result1);
                tabnum[h] = res1_doub;
je vois pas la déclaration de tabnum;

que ce passe t'il si la requette renvoi moins de 4 éléments?

Pourquoi demander touts les résultat puis n'en renvoyer qu'un seul, la requette devrait te sortir dirrectement le quatriéme si c'est bien ce que tu veux, imagine que la table contienne 3 000 000 de "Num" !!!

As-tu vérifier que la valeur dans nz est bien conforme a ton attenteaprés l'appel à la fonction zoneChangement()?

Est tu certain de ta requette ?
"select distinct(Num) from table where Num !='"+0+"' " 
là tu additionne des choux et des carote (string et int) au pire :
"select distinct(Num) from table where Num !='"+(0).ToString()+"' "
le 0 étant codé de maniére fixe pouquoi ne pas écrire :
"select distinct(Num) from table where Num !='0' "
ou le cas échéant, utilise une requette paramétré :
"select distinct(Num) from table where Num [mailto:!=@p1 !=@p1] "
Est tu bien sur de l'utilisation de != pour "différent" de ne serais pas plutot <> ?

Utilise des clauses using pour proprement détacher les resources

ceci est déjà un peut plus propre (et pas sufisant hein...) :

public string zoneChangement()
{
   string requete1 = "select distinct(Num) from table where Num <>'0' ";
   using(SqlConnection connection = new SqlConnection(connectionString))
   {
      connection.Open();
      using(SqlCommand oCommand = new SqlCommand(requete1, connection))
      {
         int h = 0;
         using(SqlDataReader reader1 = oCommand.ExecuteReader())
         {
            while (reader1.Read())
            {
               if(h==3)return reader1.GetString(0);
               h++;
            }
            throw new Exception("élément inexistant !!!"); // pour débuguer
            //return string.Empty; // ou null comme tu veux
         }
      }
   }
}

As-tu pensez à le faire du LinqToSql?

Merci cs_Malkuth 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_Malkuth
cs_baby85 79 Messages postés mercredi 22 octobre 2008Date d'inscription 17 juin 2009 Dernière intervention - 1 avril 2009 à 22:51
0
Merci
bonsoir,
merci bien pour votre réponse Malkuth
ca etait bien marché
Commenter la réponse de cs_baby85
omyoussef 25 Messages postés mardi 6 juillet 2010Date d'inscription 18 mars 2013 Dernière intervention - 8 juil. 2011 à 12:17
0
Merci
Salut,
j'ai un problème lorsque je veux afficher le résultat d'une requête sur une listbox, lors d'un clic sur un bouton.
Ma requête doit fournir les champs d'une table ayant une clé primaire égale à la valeur contenue dans un textbox.

Voici mon code;
private void button4_Click(object sender, EventArgs e)
{ SqlConnection myConnection = new SqlConnection (
"server=SWEET-B0260DB61\\SQLEXPRESS;" +
"Trusted_connection=yes;"+
"database=gestion production;"+
"Connection timeout=100");
SqlDataReader reader = null;
try
{
myConnection.Open();
SqlCommand command = new SqlCommand("SELECT code_MP,cout_unité FROM m_p where (code_article like @cod_ar) )", myConnection);
command.Connection = myConnection;

command.Parameters.Add(new SqlParameter("@cod_ar", System.Data.SqlDbType.NVarChar, 20, "code_article"));
command.Parameters["@cod_ar"].Value = textBox1.Text;

reader = command.ExecuteReader();
listBox1.Items.Clear();
while (reader.Read())
{
listBox1.Items.Add(reader["code_MP"].ToString() + " " + reader["cout_unité"].ToString());

}
}
catch (Exception z)
{
MessageBox.Show(z.ToString());
}
finally
{ if (reader!=null)
reader.Close();
if ( myConnection.State==ConnectionState.Open)
myConnection.Close();
}

}

je n'arrive pas avoir l'affichage et l'erreur indique " incorrect syntax near ')'et la ligne de l'erreur est: reader = command.ExecuteReader();

j'espere etre claire pour que vous puissiez m'aidé
merci d'avance :)
Commenter la réponse de omyoussef
aminescm 7 Messages postés mercredi 19 octobre 2011Date d'inscription 9 mai 2012 Dernière intervention - 3 mars 2012 à 02:00
0
Merci
voila un exemple , il peut vous aider :


private void button2_Click(object sender, EventArgs e)
{

SqlConnection Connecter = new SqlConnection();
Connecter.ConnectionString = "data source=PC-PC ;DATABASE=amine ;Integrated Security=True;";
Connecter.Open();



SqlCommand Sql = new SqlCommand("select * from login ", Connecter);

SqlDataReader dr;
dr = Sql.ExecuteReader();
int rt = new int() ; //declarer un autre type


while (dr.Read())
{

if (dr["login"].ToString() == textBox1.Text && dr["password"].ToString() == textBox2.Text)

{
update();
rt = 1;
}
else rt = 0;
this.Opacity = this.Opacity - 0.28;

}



if (rt == 0)
{

MessageBox.Show("login ou mot de pass est invalide ");
textBox1.Text = "";
textBox2.Text = "";
}
Commenter la réponse de aminescm

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.