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 :

Création d'une base de donnée en langage c# [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2018
    Messages : 32
    Points : 24
    Points
    24
    Par défaut Création d'une base de donnée en langage c#
    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 : 1179
Taille : 5,5 Ko

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

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ce n'est pas la table que tu indiques dans la chaine de connexion mais la base de données
    mais ceci n'est pas toujours obligatoire
    je ne connnais pas mysql mais sur sql server si on ne précise pas de base on peut se connecter au serveur sql quand même
    après il y a en général des tables systèmes pour connaitre la liste des bases de données d'une instance, la liste des tables d'une base etc...
    et aussi de quoi créer tout (create database, create table ...)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2018
    Messages : 32
    Points : 24
    Points
    24
    Par défaut Oui, mais
    Je sais que j’indique ma base de donnée et non ma table, ce que je souhaite c’est : me connecter au serveur, apres verifier si dans le serveur une base de donnée nommé «*generateur_mdp*» existe. Si elle existe je passe a la suite, mais si elle existe pas je crée la base pui je cree a l’interrieur de ma base une table mdp qui contien 4 champ, IDMDP, NomSite, UrlSite, et MotDePasse. Pour les requêtes je saurais faire, mais le problème c’est que je sais pas dutout comment me connecter et après vérifier si ma base existe ou pas et si non la créé.

    Merci de ta réponse précédente.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    google ...
    moi en 10 secondes je trouve ca
    SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA

    +

    Citation Envoyé par Pol63 Voir le message
    je ne connnais pas mysql mais sur sql server si on ne précise pas de base on peut se connecter au serveur sql quand même
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2018
    Messages : 32
    Points : 24
    Points
    24
    Par défaut Merci
    Merci mais j’ai également vu ça sur internet, j’ai juste absolument pas compris ce que ça voulais dire. Comme je l’ai dis j’ai même pas un an de cours en c# et sql, et on as pas vu encore en cours les bases de données en c# je me suis lancé ce projet seul par passion. Ce qui fait que j’ai besoin d’aide un peu donc si tu veut bien m’expliquer en quoi cette ligne peut m’être utile je t’en serais très reconnaissant ( je ne comprend pas l’utilisation du terme shema dans la requête par exemple )

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    un sgbdr c'est des bases, des tables, des requetes et plein d'autres choses
    quand on se connecte sans base on arrive en fait sur une base système (tout du moins c'est le cas sur sql server, où la base système s'appelle master)
    sur cette base il y a des tables/vues systèmes qui permettent d'obtenir des infos sur l'instance du sgbdr
    on peut donc demander la liste des bases de données
    donc la requete doit retourner les noms des bases présentes (tout comme on pourrait trouver la liste des users, la taille des bases, qui est connecté actuellement etc...)

    après c'est une requete comme une autre, donc tu peux la lire comme les autres, et à partir de là déterminer si tu dois ou non faire un CREATE DATABASE (qui est une requete aussi) (et les create table qui vont avec)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2018
    Messages : 32
    Points : 24
    Points
    24
    Par défaut Merci
    Merci beaucoup de tes explication qui mon bien aidé je test si j'y arrive et je te redis, encore merci pour ton temps passé a m'expliquer

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2018
    Messages : 32
    Points : 24
    Points
    24
    Par défaut C'est bon
    Merci tout marche parfaitement je suis vraiment contant, encore merci et bonne soirée

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

Discussions similaires

  1. création d'une base de donnée par programme
    Par lassad dans le forum Bases de données
    Réponses: 9
    Dernier message: 18/10/2005, 16h36
  2. création d'une base de données
    Par cyrilng dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 18/05/2005, 14h38
  3. Réponses: 4
    Dernier message: 22/09/2004, 09h17
  4. Création d'une base de données contenant des images
    Par gandalf_le_blanc dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 16/06/2004, 15h29

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