IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Connection must be valid and open avec Mysql


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 33
    Par défaut Connection must be valid and open avec Mysql
    Bonjour,
    Suite a mon projet , je crée la connection a BDD sous MySql et j'ai une erreur qui me dit
    Connection must be valid and open.
    Je comprend pas pourquoi il me dit ca ?

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    namespace WindowsApplication1
    {   public class Projets
        {   
           private MySqlConnection connection;
     
           public Projets()
           {
               String ConnectionStr = "Database=projet;Data Source=localhost;User Id=root;Password=*****";
               MySqlConnection connection = new MySqlConnection(ConnectionStr);
               connection.Open();
           }
          /* public ~Projets()
           {
            connection.Close();
           }        
               */   
           public void ajouts(String nom,String Badge,String code)
            {            
                String actif = "Oui";
                String add = " INSERT INTO techniciens Values ("+nom+","+Badge+","+code+","+actif+")";
                MySqlCommand myCommand = new MySqlCommand(add,connection);
                myCommand.ExecuteNonQuery();
            }
    } public partial class Form1 : Form
        {
            Projets Lien=new Projets();
            public Form1()
            {
                InitializeComponent();
            }
            public Form1(ref Projets lien)
            {
                Lien =  lien;
            }
            private void button1_Click(object sender, EventArgs e)
            {
                string texte1 = textBox1.Text.Trim();
                string texte2 = textBox2.Text.Trim();
                string texte3 = textBox3.Text.Trim();
     
                if ((texte1.Length != 0) && (texte2.Length != 0) && (texte3.Length != 0))
                {
                    Lien.ajouts(texte1, texte2, texte3);
                    MessageBox.Show("Ajout effectuer", "Vérification de la saisie",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("Erreur sur une valeur saisie", "Vérification de la saisie",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
     
     
        }
    }

  2. #2
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    Un conseil, mets une classe par fichier sinon tu va vite être débordé.

    Ensuite, si je me souviens bien, la fonction MySqlConnection .Open() retourne un booléen. Tu pourrais donc checker le retour de cette fonction afin de voir si la connection a effectivement été ouverte.

    J'imagine que tu as l'exception quand tu tentes d'exécuter ta Command ?
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 33
    Par défaut
    Heu non, je n'ais aucune exeption , le programme fonctionne normalement ,et lorsque je veux ajouter dans la BDD , j'ai cette erreur qui est apparue
    je comprend pas pourquoi ca ne marche pas ....

  4. #4
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    Si tu n'as aucune exception, comment as-tu eu le message d'erreur ?

    Et as-tu mis en place le test du retour de la fonction Open ?
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 33
    Par défaut
    BOnjour, je suis entrain de remaniers , mes classe par fichiers comme tu me le recommande , mais j'arrive pas a trouver la valeur que retourne MySqlConnection .Open() en cas de reussite ou d'echec (je pense que c'est 1 reussite , 0 echec)

    et non j'ai aucune erreur qui s'affiche lors de l'execution .

    En faite j'ai crée une petite IHM qui a 3 text box , et dasn chaque box j'ecrit le nom , un numero et un code . et lorsque j''appui sur la commande pour l'envoyers dans ma base de donnée ,j'ai cette erreur qui s'affiches . ( dans tout les programme que je vois sur le net je vois aucun qui utilise la valeur de MySqlConnection .Open() )

    j'ai une petite fenetre qui s'affiche et qui me dit :

    L'exception InvalidOperationException n'a pas été gérée

    Connection must be valid and open.
    mais je comprend pas pourquoi ca fait cela :s

  6. #6
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    Tu peux faire un try catch afin d'englober le code qui génère l'exception et gérer toi même l'exception, en affichant le message dans une MessageBox par exemple.

    Quand à la fonction Open, il me semblait qu'elle retournait un booléen mais j'en suis pas sûr. Regarde la doc et/ou l'intellisense pour voir si elle retourne quelque chose et agir en fonction.

    Et vu ton message, ta connexion est soit invalide, soit fermée, donc le Open ne marche pas comme prévu. Vérifie tes paramètres de connexion.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 33
    Par défaut
    Okay c'est bon sa marche , j'ai plus l'erreur , en faite ce n'etait pas l'erreur , c'est le compilateur qu'il voulait que je fasse un Try & catch afin de verifier les exceptions =)


    MErci beaucoup de ton aide =)

  8. #8
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    Tu arrives à récupérer les données ?

    Tu as mis quoi dans le catch ?
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 33
    Par défaut
    Dans le catch j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try
                {
                    myCommand.ExecuteNonQuery();
                }
                catch (InvalidOperationException)
                {
                }

    Mais maintenant je me rend compte que c'est mon Connect.open() qui est foireux :s

    apres reaoganisation voici mes projets :


    IHM :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using MySql.Data;
    using MySql.Data.MySqlClient;
    using System.Collections;
    using ProjetClassReorganisé;
     
     
    namespace WindowsApplication1
    {   
        public partial class Form1 : Form
        {
            Connect Lien=new Connect();
            public Form1()
            {
                InitializeComponent();
            }
             void  creelien (ref Connect lien)
            {
                Lien =  lien;
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                string texte1 = textBox1.Text.Trim();
                string texte2 = textBox2.Text.Trim();
                string texte3 = textBox3.Text.Trim();
     
                if ((texte1.Length != 0) && (texte2.Length != 0) && (texte3.Length != 0))
                {
                    Lien.connect();
                    Lien.ajouts(texte1, texte2, texte3);
                    MessageBox.Show("Ajout effectuer", "Vérification de la saisie",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("Erreur sur une valeur saisie", "Vérification de la saisie",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
     
     
        }
    }
    Et voici le connect :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
     
    using System;
    using System.Collections.Generic;
    using System.Text;
    using MySql.Data;
    using MySql.Data.MySqlClient;
     
     
     
    namespace ProjetClassReorganisé
    {
       public class Connect
        {
     
          public void connect()
            {
                String ConnectionStr = "Database=projet;Data Source=localhost;User Id=root;Password=*****";
                MySqlConnection connection = new MySqlConnection(ConnectionStr);
                try
                {
                    connection.Open();
                }
                catch 
                {
     
                };
            }
            public void ajouts(String nom, String Badge, String code)
            {
                String actif = "Oui";
                int BBadge=int.Parse(Badge);
                int CCode=int.Parse(code);
     
                String add = " INSERT INTO techniciens Values ("+nom+","+BBadge+"," + CCode + "," + actif + ")";
                MySqlCommand myCommand = new MySqlCommand(add);
                try
                {
                    myCommand.ExecuteNonQuery();
                }
                catch (InvalidOperationException)
                {
                }
     
            }
        }
    }
    LE probleme pour que j'affiche dans un message BOX je dois crée un lien entre ces 2 classe.

    j'ai reussi a crée un lien unidirectionnel entre l'IHM et LE connect , mais j'arrive pas a faire en BIdirectionnel pour pourvoir afficher dans un message box la valeur retournée par le connect.

  10. #10
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    Fais plutôt ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try
    {
        connection.Open();
    }
    catch(Exception ex)
    {
        ex.Message;
    };
    Exception va te catcher toutes les exceptions, donc il faudrait le remplacer par le type d'exceptions qui risquent d'être levées par le code du try, mais dans un premier temps ça te permettra d'avoir le message d'erreur.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 33
    Par défaut
    Okay merci , d'apres ce que tu ma passer , mon probleme vien pas de mon connect car il arrive a se connecter

    donc c'est ma fonction ajouts qui doit planter .

    Merci de ton aide =)

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 33
    Par défaut
    Affaires resolu j'ai trouvée mon probleme , et maintenant sa marches , merci beaucoup de ton aide =)

  13. #13
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    Juste pour savoir, qu'est-ce qui clochait ?
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 33
    Par défaut
    dans l'ancien programme la methode ajouts arriver pas a se connecter a la BDD, car ils etait pas dans la meme methode, je les ai mise ensemble et il y a aussi le fait que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MySqlCommand(add,connection);
    je l'avait mal instancier j'avais mis :
    donc voila .

    Si tu veux voici mon programme connect :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    using System;
    using System.Collections.Generic;
    using System.Text;
    using MySql.Data;
    using MySql.Data.MySqlClient;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Collections;
    using System.Windows.Forms;
     
     
    namespace ProjetClassReorganisé
    {
       public class Connect
        { 
           public void ajouts(String nom, String Badge, String code)
            {
                String actif = "Oui";
     
                int BBadge=int.Parse(Badge);
                int CCode=int.Parse(code);
     
                String ConnectionStr = "Database=projet;Data Source=localhost;User Id=root;Password=*****";
     
                MySqlConnection connection = new MySqlConnection(ConnectionStr);
     
                try
                {
                    connection.Open();
                }
     
                catch (MySqlException Ex)
                {
                    MessageBox.Show("Erreur Connexion:\n" + Ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
     
                String add = " INSERT INTO techniciens Values ('"+nom+"','"+BBadge+"','" + CCode + "','" + actif + "')";
                MySqlCommand myCommand = new MySqlCommand(add,connection);
                try
                {
                    myCommand.ExecuteNonQuery();
                }
                catch (InvalidOperationException Ex)
                {
                    MessageBox.Show("Erreur :\n" + Ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
     
                }
                connection.Close();
     
            }
    }

  15. #15
    Candidat au Club Avatar de kapapa
    Homme Profil pro
    étudiant en informatique
    Inscrit en
    Août 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : étudiant en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2016
    Messages : 3
    Par défaut connection must be valid or open
    Citation Envoyé par Hyoga95 Voir le message
    BOnjour, je suis entrain de remaniers , mes classe par fichiers comme tu me le recommande , mais j'arrive pas a trouver la valeur que retourne MySqlConnection .Open() en cas de reussite ou d'echec (je pense que c'est 1 reussite , 0 echec)

    et non j'ai aucune erreur qui s'affiche lors de l'execution .

    En faite j'ai crée une petite IHM qui a 3 text box , et dasn chaque box j'ecrit le nom , un numero et un code . et lorsque j''appui sur la commande pour l'envoyers dans ma base de donnée ,j'ai cette erreur qui s'affiches . ( dans tout les programme que je vois sur le net je vois aucun qui utilise la valeur de MySqlConnection .Open() )

    j'ai une petite fenetre qui s'affiche et qui me dit :


    mais je comprend pas pourquoi ca fait cela :s
    le message connection must be valid or open affiche très souvent quand vous utilisez mal le usercontrol ou le control utilisateur
    essaie de revoir tes usercontrols

  16. #16
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    Citation Envoyé par kapapa Voir le message
    le message connection must be valid or open affiche très souvent quand vous utilisez mal le usercontrol ou le control utilisateur
    essaie de revoir tes usercontrols
    Tu sais que ce post date de 2010 ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] pb de connection avec mysql
    Par LuckySoft dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/02/2007, 08h36
  2. Réponses: 2
    Dernier message: 22/11/2006, 16h22
  3. comment établir une connection de VB avec MYSQL
    Par hhafid dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/08/2006, 15h57
  4. [SGBD] probleme de connection avec MYSQL server 4.1
    Par sezar dans le forum Installation
    Réponses: 1
    Dernier message: 15/06/2006, 21h41
  5. Problème de connection avec mysql
    Par moule dans le forum Réseau
    Réponses: 2
    Dernier message: 19/04/2006, 13h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo