Résolu Erreur SQL eclipse

jeanton.lgn

Nouveau membre
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 :

JavaScript:
private JButton getBtnModifier() {
		if (btnModifier == null) {
			btnModifier = new JButton("Modifier");
			btnModifier.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
				btn_ajouter.setEnabled(false);
				btn_rechercher.setEnabled(false);
				btn_ok.setVisible(true);
				btn_annuler.setVisible(true);
				txt_id.setEditable(true);
				txt_id.requestFocusInWindow();
				txt_nom.setEditable(true);
				txt_couleur.setEditable(true);
				txt_son.setEditable(true);
				}
			});
			btnModifier.setBounds(352, 111, 108, 34);
		}
		return btnModifier;
	}



Code entité :



JavaScript:
package entite;
public class Instrument 
{
	private String id;
	private String nom;
	private String couleur;
	private String son ;
	
	// constructeur
	public Instrument(String wid,String wnom,String wcouleur, String wson)
	{
		id = wid;
		nom = wnom;
		couleur = wcouleur;
		son = wson;
	}
	
	public String req_InsertInstrument(){
		return "insert into instrument values('"+this.getId()+"','"+this.getNom()+"','"+this.getCouleur()+"','"+this.getSon()+"')";
	}

	public String getCouleur() {
		return couleur;
	}

	public void setCouleur(String couleur) {
		this.couleur = couleur;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getNom() {
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}

	public String getSon() {
		return son;
	}

	public void setSon(String son) {
		this.son = son;
	}
	
}
 

magellan

Modérâleur
Staff
Bon... logique!!!

où est la requête UPDATE?

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

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
Java:
public String req_UpdateInstrument(String myId, String nomModifie, String couleurModifiee, String sonModifie){
// 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 "" 
if (nomModifie=="")
{
nomModifie = this.nom;
}
// Etc etc


// puis ici revoir la requête retournée

		return "UPDATE instrument set ... etc etc";
	}

nota: le ID en String? :fou: d'où cela sort?
 

magellan

Modérâleur
Staff
Meilleure réponse
Pense à fermer le sujet en choisissant "meilleure réponse"
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 129
Messages
6 717 854
Membres
1 586 377
Dernier membre
Noleki
Partager cette page
Haut