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

Accès aux données Discussion :

[C#] Comment supprimer un enregistrement de la table ?


Sujet :

Accès aux données

  1. #1
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut [C#] Comment supprimer un enregistrement de la table ?
    Salut,
    j'ai essayé de supprimer une ligne de la table. dans un premier temps, j'ai ecris la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    myDataSet.Tables["personne"].Rows[this.BindingContext
    [myDataSet.Tables["personne"]].Position].Delete();

    mais la suppression affecte que le Dataset et non pas la base de données.
    j'ai rajouté après un Update :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       mySqlAdapter.Update(myDataSet, "personne");
                // Rechargement des données de la source mise à jour
                myDataSet.Clear();
                mySqlAdapter.Fill(myDataSet, "personne");
    alors au moment de l'execution, il me donne l'erreur suivante :
    Update requiert un DeleteCommand valide lors du passage de la collection DataRow avec des lignes supprimées.
    Je suis bloqué, je sais pas quoi faire. Merci

  2. #2
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Bonjour,

    Cela doit etre du à une légère confusion de ta part dans l'utilisation du DataAdapter. Un DataAdapter est capable d'Updater une base de données depuis un dataSet mais pour cela, il se repose sur 4 Commandes
    • -InsertCommand
    • -DeleteCommand
    • -UpdateCommand
    • -SelectCommand

    Il faut donc que la commande de Delete soit spécifiée. Vérifie donc que dans ton dataAdapter, les 4 commandes sont correctement remplies et ensuite cela devrait fonctionner

    Regarde par là : ADO.Net
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  3. #3
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    En fait j'ai déja mis DeleteCommand, je te donne mon code complet de suppression pour voir :

    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
     
            private void btnSupprimer_Click(object sender, EventArgs e)
            {
                // Remplissage de la commande InsetCommand
                mySqlAdapter.DeleteCommand = new SqlCommand("delete from
     personne where id =@id)", myConnection);
     
     
                SqlParameter param1;
                param1 = new SqlParameter();
                param1.ParameterName = "@id";
                param1.DbType = DbType.Int32;
                param1.Value = int.Parse(txtId.Text);
     
     
                mySqlAdapter.DeleteCommand.Parameters.Add(param1);
     
     
                myDataSet.Tables["personne"].Rows[this.BindingContext
    [myDataSet.Tables["personne"]].Position].Delete();
                mySqlAdapter.Update(myDataSet, "personne");
                myDataSet.Clear();
                mySqlAdapter.Fill(myDataSet,"personne");
     
     
            }
    .

    maintenant j'ai une autre erreur d'execution :
    Ligne 1 : syntaxe incorrecte vers ')'.

    et pointe sur la ligne de code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      mySqlAdapter.Update(myDataSet, "personne");
    J'ai deja vu le lien vers ADO. je m'en suis servi pour faire insertion. Merci.
    Mais la au niveau de la suppresion je suis bloqué.

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par paradeofphp
    maintenant j'ai une autre erreur d'execution :
    Ligne 1 : syntaxe incorrecte vers ')'.
    Ben voui mais l'erreur viens bien d'ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mySqlAdapter.DeleteCommand = new SqlCommand("delete from
     personne where id =@id)", myConnection);
    Enlève cette parenthèse intruse
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  5. #5
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Oh la bien joué! Je l'ai relu au moins 10 fois sans le voir
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  6. #6
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par cladsam
    Oh la bien joué! Je l'ai relu au moins 10 fois sans le voir
    çà nous arrive à tous et régulièrement , du moment où l'exception me le dit clairement alors c'est elle que je crois et pas mes yeux
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  7. #7
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    très bien joué, vraiment je l'ai pas vu, j'ai du l'annulé et ecrire comme suit :

    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 btnSupprimer_Click(object sender, EventArgs e)
            {
                DialogResult rs = MessageBox.Show("Voulez-vous vraimment
     supprimer cette personne", "Attention", MessageBoxButtons.YesNo,
     MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2);
     
                if (rs == DialogResult.Yes)
                {
                    CmdDelete = new SqlCommand("DELETE FROM personne
     WHERE id =" + int.Parse(txtId.Text) + "", myConnection);
                    CmdDelete.ExecuteNonQuery();
                    myDataSet.Clear();
                    mySqlAdapter.Fill(myDataSet, "personne");
                }
            }
    Alors Merci bien. Abientot

    A votre avis, laquelle est la meilleur entre ces 2 procedures??, sachant que je travaille sur une applucation Windows Form. pour moi la première est un peu longue est compliquée, la 2ème est très lisible et clair. Mais je demande votre avis. Merci

  8. #8
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par paradeofphp
    ... pour moi la première est un peu longue est compliquée...
    Depuis quand ceci est un argument de qualité
    Il faut choisir en fonction du besoin réel et eventuellement des performances recherchés
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  9. #9
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    bah il faut produire un code court et efficace. Mais puisque je suis debutant en C" c'est pour ca que j'ai posé la question. Donc qulle est la meilleur des 2 et pourquoi? Stp j'ai besoin de cette réponse pour eclaircir mes idées.

  10. #10
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Ben Neguib à quelque part déjà répondu : la meilleure solution c'est celle qui ..;répond le plus aux besoins en respectant les exigences de performance
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  11. #11
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par paradeofphp
    bah il faut produire un code court et efficace.
    Pas du tout sûr que ces termes soient aussi compatibles que tu sembles le penser. Mise plutôt sur un code propre et clair car correctement commenté pour ceux qui auront la galère de reprendre ton code
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  12. #12
    Membre habitué Avatar de souaddemaroc
    Inscrit en
    Novembre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 194
    Points : 143
    Points
    143
    Par défaut
    Salut
    Je pense que vous devez utiliser un commandbuilder comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dim cmd as new sqlcommandbuilder
    cmd=new sqlcommandbuilder(dataadapter)
    La vie semble à un pont et le meilleur de nous c'est ce lui qui le traversent

  13. #13
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par souaddemaroc
    Salut
    Je pense que vous devez utiliser un commandbuilder comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dim cmd as new sqlcommandbuilder
    cmd=new sqlcommandbuilder(dataadapter)
    Attention souaddemaroc ceci n'est possible que si tu as d'abord correctement initialisé le SelectCommand du DataAdapter
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/04/2011, 11h40
  2. Comment supprimer des enregistrements dans deux tables ?
    Par Daniela dans le forum VBA Access
    Réponses: 15
    Dernier message: 18/06/2009, 17h51
  3. Supprimer un enregistrement dans 2 tables
    Par funny_surf dans le forum Access
    Réponses: 1
    Dernier message: 27/12/2005, 10h41
  4. Réponses: 17
    Dernier message: 18/03/2005, 15h56
  5. HELP!Comment supprimer des enregistrements de tables jointes
    Par ROOTPARIS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/06/2004, 16h41

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