Problème d'ajout dans la base de données

zanzant411 Messages postés 5 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 1 septembre 2015 - Modifié par NHenry le 1/09/2015 à 18:15
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 - 3 sept. 2015 à 11:20
bonjours,
j'ai un problème lors de l'ajout d'une ligne dans ma table mysql
voila mon code:
private void button1_Click(object sender, EventArgs e)
        {   int t=1;
            DataTable dt3 = new DataTable();
            Connexion.conn.Open();
            MySqlCommand comm1 = new MySqlCommand("Select id from equipement where equipement.nom='" + comboBox2.SelectedValue + "'", Connexion.conn);
            Connexion.reader = comm1.ExecuteReader();
            while (Connexion.reader.Read())
            {
                t = Convert.ToInt16(Connexion.reader.GetValue(0));
            }
           
            Console.Write(t);
            MySqlCommand comm= new MySqlCommand("insert into echaffaudage(hauteur, largeur,longueur,date_montage,datedemontage,id_atelier) values('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+dateTimePicker1.Value+"','"+dateTimePicker2.Value+"','"+t+"')");

            comm.ExecuteNonQuery();

            Connexion.conn.Close();
        }

quand je l'execute il m'affiche l'erreur "connection must be open and valid"
merci d'avance pour votre aide :)

EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
3 sept. 2015 à 11:20
Bonjour,

Dans ta deuxième MySqlCommand tu ne lui donnes pas la connection à utiliser.

de plus,

pourquoi fais tu un while et un read alors que ton id doit être unique ?
Et aussi attention si le nom n'existe pas ou plus id vaudra 1 et tu vas mettre de brol dans ta table.

le code est plus simple comme ceci.
private void button1_Click(object sender, EventArgs e)
        {   
            int? t = null;
            Connexion.conn.Open();
            MySqlCommand comm1 = new MySqlCommand("Select id from equipement where equipement.nom='" + comboBox2.SelectedValue + "'", Connexion.conn);
            t = (int?)comm1.ExecuteScalar();
            Console.Write(t);
            if (t != null)
            {
                    MySqlCommand comm= new MySqlCommand("insert into echaffaudage(hauteur, largeur,longueur,date_montage,datedemontage,id_atelier) values('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+dateTimePicker1.Value+"','"+dateTimePicker2.Value+"','"+t+"')",Connexion.conn);
                    comm.ExecuteNonQuery();
            }
            Connexion.conn.Close();
        }


tu peux aussi mettre un try catch au cas ou et tester si ta connection est fermée avant de l'ouvrir.



bonne journée
0
Rejoignez-nous