Bonjour,
Je suis actuellement en fin de première année de BTS SIO, option développement.
Hier je me suis lancé pour projet de créé une application Windows Forms qui me sert de gestionnaire de mot de passe, avec possibilité de générer aléatoirement un mot de passe. J'ai également réussi à me connecter à ma base de donnée et a enregistrer les informations a l'intérieur sans problèmes. Mais après réflexion je me suis dis que mon programme étais nul car il ne marchais uniquement si un table avec un nom bien spécifique et que des champs bien spécifique existait a l'intérieur de la table. Pour palier à ce problème j'aimerais que si la table n'es pas trouvé sur le serveur mon programme la créé. Le problème c'est que lors de ma connexion au serveur il faut que je lui indique la table. Pouvez vous m'indiquer comment faire svp, ou m'envoyer le lien d'une doc, j'ai rien trouvé sur internet.
Voici mon code. Je sais pas si il est bien j'ai fais ça rapidement et sans trop réfléchir. Si vous voyez un problème ou quelque chose de "moche" merci de me l'indiquer également.

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
 
 
using System;
using System.Windows.Forms;
 
namespace Generateur
{
    public partial class Generateur : Form
    {
        GestionBDD BDDGenerateurMDP = new GestionBDD();
        private Random rnd = new Random();
        private static string sSimple = "abcdefghijklmnopqrstuvwxyz0123456789";
        private static string sNormal = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        private static string sComplique = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ@#%&+-*/$£€";
 
        public Generateur()
        {
            InitializeComponent();
            lblDemandeConnexion.Visible = true;
            gbAjouter.Visible = false;
            cmbTypeMDP.SelectedIndex = 0;
            txtbNbChar.Text = "6";
        }
 
        private void ssmenuConnecter_Click(object sender, EventArgs e)
        {
            BDDGenerateurMDP.ShowDialog();
            if (BDDGenerateurMDP.bConnexionEtablie)
            {
                lblDemandeConnexion.Visible = false;
                gbAjouter.Visible = true;
            }
        }
 
        private void ssmenuDeconnecter_Click(object sender, EventArgs e)
        {
            try
            {
                BDDGenerateurMDP.cdb.Close();
            }
            catch
            {
                MessageBox.Show("Vous n'êtes pas connecté", "Attention");
            }
            lblDemandeConnexion.Visible = true;
        }
 
        private void btnGeneration_Click(object sender, EventArgs e)
        {
            if(txtbNbChar.Text == "" || int.Parse(txtbNbChar.Text) < 4 || int.Parse(txtbNbChar.Text) > 40) { MessageBox.Show("Veuillez entrer le nombre de caractère du mot de passe (entre 4 et 40)"); }
            else
            {
                string sTypeMDP = "", sMDP = "";
 
                if (cmbTypeMDP.Text == "Simple") { sTypeMDP = sSimple; }
                if (cmbTypeMDP.Text == "Normal") { sTypeMDP = sNormal; }
                if (cmbTypeMDP.Text == "Compliqué") { sTypeMDP = sComplique; }
                int iNbCharType = sTypeMDP.Length;
 
                for (int i = 0; i < int.Parse(txtbNbChar.Text); i++)
                {
                    int iChar = rnd.Next(0, iNbCharType);
                    sMDP += sTypeMDP.Substring(iChar, 1);
                }
                txtbMDP.Text = sMDP;
            }
        }
 
        private void btnEnregistrer_Click(object sender, EventArgs e)
        {
            BDDGenerateurMDP.AjouterEnregistrement(txtbNom.Text, txtbUrl.Text, txtbMDP.Text);
        }
    }
}
 
 
using System;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
 
namespace Generateur
{
    public partial class GestionBDD : Form
    {
        public MySqlConnection cdb;
        public bool bConnexionEtablie;
 
        private string sErreur;
 
        public GestionBDD()
        {
            InitializeComponent();
        }
 
        private void btnConnexion_Click(object sender, EventArgs e)
        {
            cdb = new MySqlConnection("DATABASE = generateur_mdp; SERVER = "+ txtbServeur.Text +";  USER ID = " + txtbUser.Text + "; PWD = " + txtbPassword.Text + "; SslMode = none");
            try
            {
                cdb.Open();
                MessageBox.Show("Connecté à la base");
                bConnexionEtablie = true;
                txtbUser.Text = "";
                txtbPassword.Text = "";
                this.Hide();
            }
            catch(MySqlException mse)
            {
                //MessageBox.Show(mse.Number.ToString());
                if (txtbServeur.Text == "") { sErreur = "Veuillez entrer l'IP de votre base de donnée."; goto MessageErreur; }
                if (mse.Number == 1042) { sErreur = "IP incormset, ou base de donnée éteinte."; goto MessageErreur; }
                if (txtbUser.Text == "") { sErreur = "Veuillez entrer nom un d'utilisateur."; goto MessageErreur; }
                if (mse.Number == 0) { sErreur = "Nom d'utilisateur ou mot de passe incorrect."; goto MessageErreur; }
                MessageErreur:
                MessageBox.Show(sErreur, "Attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                bConnexionEtablie = false;
            }
        }
 
        public void AjouterEnregistrement(string nom, string url, string mdp)
        {
            MySqlCommand cmd = new MySqlCommand("INSERT INTO mdp(NomSite, UrlSite, MotDePasse) VALUES(@NomSite, @UrlSite, @MotDePasse)", cdb);
            cmd.Parameters.AddWithValue("@NomSite", nom);
            cmd.Parameters.AddWithValue("@UrlSite", url);
            cmd.Parameters.AddWithValue("@MotDePasse", mdp);
            try
            {
                cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                MessageBox.Show("Nouveau mot de passe bien enregistré");
            }
            catch (MySqlException mse)
            {
                string sErreur = "";
                if (nom == "") { sErreur = "Entrez le nom du site"; goto MessageErreur; }
                if (url == "") { sErreur = "Entrez l'Url du site"; goto MessageErreur; }
                if (mdp == "") { sErreur = "Entrez le mot de passe ou généré en un aléatoirement"; goto MessageErreur; }
                if (mse.Number == 0) { sErreur = "Connexion avec la base de donnée perdu"; goto MessageErreur; }
                MessageErreur:
                MessageBox.Show(sErreur, "Attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            catch(InvalidOperationException ioe)
            {
                if(ioe.HResult == -2146233079) { MessageBox.Show("Connexion avec la base de donnée perdu", "Attention", MessageBoxButtons.OK; MessageBoxIcon.Warning); }
            }
        }
    }
}
Nom : Screenshot_6.png
Affichages : 1297
Taille : 5,5 Ko

Nom : Screenshot_3.png
Affichages : 1251
Taille : 13,6 Ko