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 :

Supprimer une ligne sélectionné DataGridView et MySql [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2018
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 88
    Par défaut Supprimer une ligne sélectionné DataGridView et MySql
    Bonjour tout le monde,

    J'essaye depuis je ne sais combien de temps de supprimer une ligne dans une "datagridview" en cliquant sur une cellule et ensuite sur le bouton "Delete", mais en vain j'arrive a supprimer dans la datagridview mais pas sur ma "base de donnée"

    * Dans la fonction supprimé, il y a une ligne commenté car je peux également supprimer une ligne via le ID en le tapant directement et en cliquant sur "Delete" ( Qui fonctionne )

    Merci pour tous ceux qui prendront le temps de regarder !!!!!!!


    Un Screenshot de mon micro Programme :

    Nom : Sans titre.png
Affichages : 1327
Taille : 6,8 Ko

    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
    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
    // Ajout de la librairie MYSQL, ne pas oublier d'ajouter la reference MYSql.Data 
     
    using MySql.Data.MySqlClient;
    using System;
    using System.Data;
    using System.Windows.Forms;
     
    namespace TestBDD
    {
        public partial class Form1 : Form
        {
     
            // Il faut rentrer les informations du serveur ou la base de donnees est hebergee.
     
            MySqlConnection connection = new MySqlConnection("datasource=localhost; database=test; port=3306; username=root; password= ");
            MySqlCommand command;
            public Form1()
            {
                InitializeComponent();
            }
     
            // Creation d'une fonction pour verifier si la connection est ouverte, et si elle ne l'est pas alors de l'ouvrir
            public void OpenConnection()
            {
                if (connection.State == ConnectionState.Closed)
                {
                    connection.Open();
                }
            }
     
            // Creation d'une fonction pour verifier si la connection est fermee, et si elle ne l'est pas alors de fermer
     
            public void CloseConnection()
            {
                if (connection.State == ConnectionState.Open)
                {
                    connection.Close();
                }
            }
     
            // Creation d'une autre fonction pour envoyer des messages si les donnees on bien etes inserees, modifiees etc...
     
            public void ExecuteQuery(string query)
            {
                try
                {
                    OpenConnection();
                    command = new MySqlCommand(query, connection);
                    if (command.ExecuteNonQuery() == 1)
                    {
                        MessageBox.Show("Query execute");
                    }
                    else
                    {
                        MessageBox.Show("Query pas execute");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    CloseConnection();
                }
            }
     
            // Insertion des donnees dans la base de donnees.
     
            private void BtnInsert_Click(object sender, EventArgs e)
            {
                string insertQuery = "INSERT INTO testdb(Nom,Age) VALUES('" + TBoxNom.Text + "','" + int.Parse(TBoxAge.Text) + "')";
                ExecuteQuery(insertQuery);
                RefreshDataGridView(dataGridView);
            }
     
            // MAJ des donnees dans la base de donnees.
     
            private void BtnUpdate_Click(object sender, EventArgs e)
            {
                string updateQuery = "UPDATE testdb SET Nom='" + TBoxNom.Text + "', Age='" + int.Parse(TBoxAge.Text) + "' WHERE ID = " + int.Parse(TBoxId.Text);
                ExecuteQuery(updateQuery);
                RefreshDataGridView(dataGridView);
            }
     
            // Suppression des donnees dans la base de donnees.
     
            private void BtnDelete_Click(object sender, EventArgs e)
            {
                int rowIndex = dataGridView.CurrentCell.RowIndex;
                dataGridView.Rows.RemoveAt(rowIndex);
     
                //string deleteQuery = "DELETE FROM testdb WHERE ID =" + int.Parse(TBoxId.Text);
                string deleteQuery = "DELETE FROM testdb WHERE ID =" + rowIndex;
                ExecuteQuery(deleteQuery);
                RefreshDataGridView(dataGridView);
            }
     
            // Fonction de raffraichissement de la datagridView
     
            public void RefreshDataGridView(DataGridView dataGridView)
            {
                try
                {
                    if (connection.State == ConnectionState.Closed)
                        connection.Open();
                    MySqlDataAdapter dataAdapter = new MySqlDataAdapter("SELECT * FROM testdb", connection);
                    DataTable dataTable = new DataTable();
                    dataAdapter.Fill(dataTable);
                    dataGridView.DataSource = dataTable;
                }
                catch (MySqlException exception)
                {
                    MessageBox.Show(exception.ToString());
                }
                finally
                {
                    connection.Close();
                }
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                RefreshDataGridView(dataGridView);
            }
        }
    }

  2. #2
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 667
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int rowIndex = dataGridView.CurrentCell.RowIndex;
     
    string deleteQuery = "DELETE FROM testdb WHERE ID =" + rowIndex;
    Tu utilises l'index de la ligne dans le Datagrid, et non la colonne ID, ce qui n'est pas du tout la même chose.

    Utilise directement la valeur qui s'y trouve dans la ligne sélectionnée et ça devrait déjà mieux marcher.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2018
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 88
    Par défaut
    @PixelJuice, quand j'ai vu ta réponse, je me suis dit "ah oueeee, je suis pas malin !!!"
    Merci a toi !!!

    En rajoutant seulement une petite ligne pour récupérer la valeur de ID tout fonctionne. Il faudrait perfectionner pour que si je ne clique pas sur une cellule ID que je puisse tout de même le récupérer.

    Voici le bout de code pour les prochains :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private void BtnDelete_Click(object sender, EventArgs e)
            {
     
                int rowIndex = dataGridView.CurrentCell.RowIndex;
                string valeur = dataGridView.CurrentCell.Value.ToString(); // Rajout de cette ligne qui permet de récupérer la l'ID dans la datagrid dans une variable pour ensuite la retourner plus bas
                dataGridView.Rows.RemoveAt(rowIndex);
     
     
     
                //string deleteQuery = "DELETE FROM testdb WHERE ID =" + int.Parse(TBoxId.Text);
                string deleteQuery = "DELETE FROM testdb WHERE ID =" + valeur; // J'ai mis la variable valeur ici qui permet d'avoir l'ID.
                ExecuteQuery(deleteQuery);
                RefreshDataGridView(dataGridView);
            }

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

Discussions similaires

  1. supprimer une ligne de datagridview
    Par najoua01 dans le forum VB.NET
    Réponses: 2
    Dernier message: 22/04/2011, 10h13
  2. supprimer une ligne dans un datagridview
    Par thib42 dans le forum VB.NET
    Réponses: 2
    Dernier message: 16/04/2008, 18h31
  3. comment supprimer une ligne d'un datagridview?
    Par matrixdine dans le forum Windows Forms
    Réponses: 3
    Dernier message: 25/03/2008, 07h43
  4. Réponses: 4
    Dernier message: 24/09/2007, 18h36
  5. Supprimer une ligne sélectionnée
    Par cadaric dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 22/06/2007, 11h34

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