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 :

Impossible d'écrire dans ma DB


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 41
    Par défaut Impossible d'écrire dans ma DB
    Bonjour à tous !

    J'ai donc un petit programme qui me permet de générer des devis sous excel..
    J'ai une partie où les données du client doivent être entrées, j'arrive bien à récupéré les données pour écrire sur mon fichier excel mais pas dans ma base de données..

    Mon code poru initialiser la connection et écrire dans la DB
    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using MySql.Data.MySqlClient;
     
    namespace GestionDevis
    {
        class SqlConnection
        {
            private MySqlConnection connection;
     
            // Constructeur
            public SqlConnection()
            {
                this.InitConnexion();
            }
     
            // Méthode pour initialiser la connexion
            private void InitConnexion()
            {
                // Création de la chaîne de connexion
                string connectionString = "SERVER=127.0.0.1:3306; DATABASE=GestionDevis; UID=root; PASSWORD=";
                this.connection = new MySqlConnection(connectionString);
            }
     
            // Méthode pour ajouter un contact
            public void AddClient()
            {
                try
                {
                    // Ouverture de la connexion SQL
                    this.connection.Open();
     
                    // Création d'une commande SQL en fonction de l'objet connection
                    MySqlCommand cmd = this.connection.CreateCommand();
     
                    // Requête SQL
                    cmd.CommandText = "INSERT INTO client(IdCli, RSCli, RueCli, VilleCli, CPCli, NumTelCli, MailCli)VALUES(@IdCli, @RSCli, @RueCli, @VilleCli, @CPCLi, @NumTelCli, @MailCli)";
     
                    // utilisation de l'objet contact passé en paramètre
                    cmd.Parameters.AddWithValue("@IdCli", Client.c.Id1);
                    cmd.Parameters.AddWithValue("@RSCli", Client.c.RS1);
                    cmd.Parameters.AddWithValue("@RueCli", Client.c.Adresse1);
                    cmd.Parameters.AddWithValue("@VilleCli", Client.c.Ville1);
                    cmd.Parameters.AddWithValue("@RueCli", Client.c.Adresse1);
                    cmd.Parameters.AddWithValue("@CPCli", Client.c.CP1);
                    cmd.Parameters.AddWithValue("@NumTelCli", Client.c.NumTel1);
                    cmd.Parameters.AddWithValue("@MailCli", Client.c.AdresseMail1);
     
                    // Exécution de la commande SQL
                    cmd.ExecuteNonQuery();
     
                    // Fermeture de la connexion
                    this.connection.Close();
                }
                catch
                {
     
                }
            }
        }
    }
    L'évenement sur lequel j'appel la méthode pour insérer les données dans la DB :
    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
    private void bt_valider_Click(object sender, EventArgs e)
            {
                Fm_Devis f = new Fm_Devis();
                f.Show();
                this.Hide();
     
                //On récupére les données des textbox
                Client.c.RS1 = tb_RS.Text;
                Client.c.Adresse1 = tb_rue.Text;
                Client.c.Ville1 = tb_ville.Text;
                Client.c.CP1 = tb_CP.Text;
                Client.c.NumTel1 = tb_numTel.Text;
                Client.c.AdresseMail1 = tb_mail.Text;
                SqlConnection sc = new SqlConnection();
                sc.AddClient();
                MessageBox.Show("Données client enregistrées !");
            }
    Le script de ma DB :
    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
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";
    CREATE DATABASE IF NOT EXISTS `GestionDevis` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    USE `GestionDevis`;
    DROP TABLE IF EXISTS `CLIENT`;
    CREATE TABLE IF NOT EXISTS `CLIENT` (
      `IdCli` int(10),
      `RSCli` varchar(100),
      `RueCli` varchar(40) ,
      `VilleCli` varchar(20),
      `CPCli`INT(10),
      `NumTelCli`INT(10),
      `MailCli`varchar(50),
      PRIMARY KEY (`IdCli`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
    DROP TABLE IF EXISTS `CA`;
    CREATE TABLE IF NOT EXISTS `CA` (
      `IdCA` varchar(3),
      `NomCA` varchar(20),
      `PnomCA` varchar(40),
      `NbDevisCA`INT(10),
      `ChiffreCA`INT(100),
      PRIMARY KEY (`IdCA`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
    DROP TABLE IF EXISTS `DEVIS`;
    CREATE TABLE IF NOT EXISTS `DEVIS` (
      `NumDev` int(7) NOT NULL,
      `IdCli` int(10),
      `IdCA` varchar(3),
      PRIMARY KEY (`NumDev`),
      FOREIGN KEY (`IdCli`) REFERENCES `CLIENT` (`IdCli`),
      FOREIGN KEY (`IdCA`) REFERENCES `CA` (`IdCA`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
    Merci d'avance pour les réponses que vous allez m'apporter,
    RythmBreaker

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,

    Dans ton code, je vois une variable Client utilisée un peu partout. Elle est définie à quel niveau ? Car dans la classe SqlConnection, je ne vois aucune définition de Client ni même un client passé en paramètre ?? Variable globale ?
    De plus, dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Fm_Devis f = new Fm_Devis();
    f.Show();
    this.Hide();
    ...
    Si Fm_Devis contient les informations à saisir pour Client, c'est normal. La méthode Show() n'est pas bloquante. Cela signifie que le code qui suit sera immédiatement exécuté...

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 41
    Par défaut
    Pour la variable c, oui c'est un objet global défini dans ma classe client.
    Immédiatement executé ? C'est à dire ?

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Comme je l'ai écrit, Show() n'est pas bloquant. Cela signifie que la fenêtre sera affichée mais le code suivant le show() sera exécuter non pas à la fermeture de la fenêtre mais immédiatement après l'affichage. Pour exécuter le code seulement après fermeture de ta fenêtre Devis, utiliser ShowDialog()

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 41
    Par défaut
    Même avec ShowDialog, ça ne fonctionne pas..
    Ou alors je l'ai mal utilisé ?
    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
     private void bt_valider_Click(object sender, EventArgs e)
            {
                //On récupére les données des textbox
                Client.c.RS1 = tb_RS.Text;
                Client.c.Adresse1 = tb_rue.Text;
                Client.c.Ville1 = tb_ville.Text;
                Client.c.CP1 = tb_CP.Text;
                Client.c.NumTel1 = tb_numTel.Text;
                Client.c.AdresseMail1 = tb_mail.Text;
                SqlConnection sc = new SqlConnection();
                sc.AddClient();
                MessageBox.Show("Données client enregistrées !");
                Fm_Devis f = new Fm_Devis();
                this.Hide();
                f.ShowDialog();
            }

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    Salut

    est-ce que tu arrives à lire dans ta base de données ?

    J'ai l'impression que ta chaine de connexion n'a pas la bonne tête...

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

Discussions similaires

  1. Impossible d'écrire dans un formulaire ou requete
    Par julie75 dans le forum Access
    Réponses: 12
    Dernier message: 28/03/2013, 15h56
  2. Impossible d'écrire dans un fichier
    Par laurentUTC dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 30/04/2007, 12h18
  3. Impossible d'écrire dans lib
    Par manson888 dans le forum Mandriva / Mageia
    Réponses: 32
    Dernier message: 14/02/2007, 21h28
  4. Impossible d'écrire dans une classe
    Par NoiBe dans le forum NetBeans
    Réponses: 1
    Dernier message: 28/12/2006, 16h33
  5. Réponses: 1
    Dernier message: 01/12/2005, 14h30

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