Votre question
Résolu

Erreur SQL eclipse

Tags :
  • Java
  • Programmation
  • Sql
  • Eclipse
  • Swing
  • Audio
Dernière réponse : dans Programmation
11 Septembre 2017 10:30:18

Bonjour ,
j'aimerais avoir de l'aide a propos d'une erreur qui apparaît lorsque je veux modifier des valeur dans ma base de donnée via un bouton que j'ai fais sur éclipse ne langage java(erreur sur la requête: duplicate entry '30' for key' primary') Le nombre 30 est l'id de l'instrument que je veux modifier dans la bdd.
Pouvez vous m'aider s'il vous plaie .
Je vous remercie d'avance.

Code du bouton modifier :

  1. private JButton getBtnModifier() {
  2. if (btnModifier == null) {
  3. btnModifier = new JButton("Modifier");
  4. btnModifier.addActionListener(new ActionListener() {
  5. public void actionPerformed(ActionEvent e) {
  6. btn_ajouter.setEnabled(false);
  7. btn_rechercher.setEnabled(false);
  8. btn_ok.setVisible(true);
  9. btn_annuler.setVisible(true);
  10. txt_id.setEditable(true);
  11. txt_id.requestFocusInWindow();
  12. txt_nom.setEditable(true);
  13. txt_couleur.setEditable(true);
  14. txt_son.setEditable(true);
  15. }
  16. });
  17. btnModifier.setBounds(352, 111, 108, 34);
  18. }
  19. return btnModifier;
  20. }




Code entité :



  1. package entite;
  2. public class Instrument
  3. {
  4. private String id;
  5. private String nom;
  6. private String couleur;
  7. private String son ;
  8.  
  9. // constructeur
  10. public Instrument(String wid,String wnom,String wcouleur, String wson)
  11. {
  12. id = wid;
  13. nom = wnom;
  14. couleur = wcouleur;
  15. son = wson;
  16. }
  17.  
  18. public String req_InsertInstrument(){
  19. return "insert into instrument values('"+this.getId()+"','"+this.getNom()+"','"+this.getCouleur()+"','"+this.getSon()+"')";
  20. }
  21.  
  22. public String getCouleur() {
  23. return couleur;
  24. }
  25.  
  26. public void setCouleur(String couleur) {
  27. this.couleur = couleur;
  28. }
  29.  
  30. public String getId() {
  31. return id;
  32. }
  33.  
  34. public void setId(String id) {
  35. this.id = id;
  36. }
  37.  
  38. public String getNom() {
  39. return nom;
  40. }
  41.  
  42. public void setNom(String nom) {
  43. this.nom = nom;
  44. }
  45.  
  46. public String getSon() {
  47. return son;
  48. }
  49.  
  50. public void setSon(String son) {
  51. this.son = son;
  52. }
  53.  
  54. }

Autres pages sur : erreur sql eclipse

a b L Programmation
11 Septembre 2017 10:42:54

Bon... logique!!!

où est la requête UPDATE?

tu as une requête INSERT ici
  1. public String req_InsertInstrument(){
  2. return "insert into instrument values('"+this.getId()+"','"+this.getNom()+"','"+this.getCouleur()+"','"+this.getSon()+"')";
  3. }


Alors qu'il te manque une requête UPDATE.

Rappels:
- INSERT ajoute des enregistrements. comme tu lui forces l'id, c'est une duplication de clé, donc un rejet
- La modification d'une donnée existante se fait par la commande SQL UPDATE.
- Toute tentative de créer une valeur de clé ID (identifiant UNIQUE) avec une valeur identique donnera une duplicate key.


Petite aide (parce que je suis sympa [:keysersoze:13])
1° prévoir quels sont les champs qu'on veut modifier
Les seules valeurs modifiables sont
nom;
couleur;
son;

donc il faut une méthode qui reçoive les trois valeurs si possible
  1. public String req_UpdateInstrument(String myId, String nomModifie, String couleurModifiee, String sonModifie){
  2. // Ici on doit tester les valeurs de modifications... parce que vu que je force les trois valeurs à être utilisées, tu dois éventuellement faire en sorte que la mise à jour en tienne compte. Par exemple, si tu as un bouton testant chaque zone, tu peux interdire les valeurs ""
  3. if (nomModifie=="")
  4. {
  5. nomModifie = this.nom;
  6. }
  7. // Etc etc
  8.  
  9.  
  10. // puis ici revoir la requête retournée
  11.  
  12. return "UPDATE instrument set ... etc etc";
  13. }


nota: le ID en String? :fou:  d'où cela sort?
m
0
l
11 Septembre 2017 14:01:05

Merci beaucoup Magellan , j'ai aussi corrigé le string de ID ^^
Bonne journée :) 
m
0
l

Meilleure solution

a b L Programmation
12 Septembre 2017 10:13:13

Pense à fermer le sujet en choisissant "meilleure réponse"
partage