Probleme modifier Tableau avec UPDATE

Fermé
gorgui2014 Messages postés 11 Date d'inscription dimanche 16 mars 2014 Statut Membre Dernière intervention 6 octobre 2014 - 17 mars 2014 à 00:20
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 17 mars 2014 à 18:36
Bonjour, j'ai un probleme avec mon instruction pour modifier une ligne du tableau.
Il m'affiche toujours le message suivant:
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

voici mon code :

// -------DAO-----------

// Modifier table Docteur
public String modifierDocteurAd(String matriculeDocteur, String prenomDocteur, String nomDocteur, String specialiteDocteur) {
String msg = "";
try{
// création et parametrage de la requete d'insertion
pst = con.prepareStatement("update docteur set matriculeDocteur = '"+matriculeDocteur+"', prenomDocteur = '"+prenomDocteur+"', nomDocteur = '"+nomDocteur+"', specialiteDocteur = '"+specialiteDocteur+"' where matriculeDocteur = '"+matriculeDocteur+"' ");
pst.setString(1, matriculeDocteur);
pst.setString(2, prenomDocteur);
pst.setString(3, nomDocteur);
pst.setString(4, specialiteDocteur);
// execution de la requete
int i = pst.executeUpdate();
if(i > 0) {
msg= "succes";
}else {
msg= "echec";
}
}catch(SQLException sqle) {
sqle.printStackTrace();
}
return msg;
}


// ----------Interrface swing---------

// Modifier docteur
private void cmd_modifierDocAdActionPerformed(java.awt.event.ActionEvent evt) {
String matriculeDocteur = txt_idenDocteur.getText();
String prenomDocteur = txt_prenomDoc.getText();
String nomDocteur = txt_nomDocteur.getText();
String specialiteDocteur = cb_specDocteur.getSelectedItem().toString();

String resultat = service.modifierDocteurAd(matriculeDocteur, prenomDocteur, nomDocteur, specialiteDocteur);
if(resultat.equals("succes")){
JOptionPane.showMessageDialog(null,"Information modifiées avec succès");

txt_idenDocteur.setText("");
txt_nomDocteur.setText("");
txt_prenomDoc.setText("");
comboBox();
Object[][] docteurs = service.showTousLesDocteurs();
JTable t = new JTable(docteurs, new String [] {"ID DOCTEUR", "MATRICULE", "PRENOM", "NOM", "SPECIALITE"});
tb_docAd.setModel(t.getModel());
}else {
JOptionPane.showMessageDialog(null,"Erreur lors de la modification des données");
}
}
A voir également:

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
17 mars 2014 à 07:38
Lorsque tu fais
pst.setString(1, matriculeDocteur);
cela suppose que tu ais un
?
dans ta requête SQL ce qui va permettre de mettre la bonne valeur à cet endroit, or toi tu as mis directement les valeurs avec
= '"+matriculeDocteur+"'
ce qui est faux.

pst = con.prepareStatement("UPDATE docteur SET prenomDocteur = ?, nomDocteur = ?, specialiteDocteur = ? WHERE matriculeDocteur = ?");
pst.setString(1, prenomDocteur);
pst.setString(2, nomDocteur);
pst.setString(3, specialiteDocteur);
pst.setString(4, matriculeDocteur);
0
gorgui2014 Messages postés 11 Date d'inscription dimanche 16 mars 2014 Statut Membre Dernière intervention 6 octobre 2014
17 mars 2014 à 12:55
J'ai changé l'instruction comme vous m'avez conseillé :

UPDATE docteur SET matriculeDocteur = ?, prenomDocteur = ?, nomDocteur = ?, specialiteDocteur = ? WHERE idDocteur = ?

mais j'ai cette erreur :

java.sql.SQLException: No value specified for parameter 5
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
17 mars 2014 à 18:36
Tu dois avoir autant de paramètres que de ? or là il t'en manque un, vérifie donc ton code.
0