Supprimer une donnée dans table mysql

Signaler
Messages postés
79
Date d'inscription
vendredi 19 août 2011
Statut
Membre
Dernière intervention
11 octobre 2011
-
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
-
Bonjour! depuis quelque temps j'essaie de supprimer une données dans table mysql avec un interface utilisateur composé de 3 champs JTextField(jref,jdesigne,jprix) et lui permettre de confirmer la suppression mais program ne marche pas
mon code:

public void jsupprimer()throws Exception{

//if(JOptionPane.showConfirmDialog(this, "voulez vous supprimer cet enregistrement", "Supprimer", 0)==0){

String pref=null;
//String pref=null;String pdesignation=null; double pprix=0;
/* pref=jref.getText();
pdesignation=jdesigne.getText();
pprix=Double.parseDouble(jprix.getText());*/
//int rep=JOptionPane.showInternalConfirmDialog(null, "Voulez vous vraiment Supprimer ce Produit", "Supprimer produit", JOptionPane.YES_NO_OPTION);
//if(rep==0){
/*if(conn==null){*/
try{

pref=jref.getText();
int resultat;
Class.forName("org.gjt.mm.mysql.Driver");
Class.forName("com.mysql.jdbc.Driver");

String url="jdbc:mysql://localhost/bd_produit?";
conn=DriverManager.getConnection(url,"root","mebf2011$");

st=conn.createStatement();
String requeted="delete from produit where ref='"+pref+"'";/* and '"+jdesigne.getText()+"' and '"+jprix.getText()+"' ";*/
resultat = st.executeUpdate(requeted);
}
catch(SQLException ex){
JOptionPane.showMessageDialog(null,"anomalie lors de l'execution de la requete","Erreur",JOptionPane.ERROR_MESSAGE);
}

finally{
if(st!=null){
try{
st.close();
}
catch(SQLException ex){
ex.printStackTrace();
}
}
/*if(rs!=null){
try{
rs.close();
}
catch(SQLException ex){
ex.printStackTrace();
}
}*/
if(conn!=null){
try{
conn.close();
}
catch(SQLException ex){
ex.printStackTrace();
}
}


}

}


bigboss
A voir également:

8 réponses

Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
15
Bonjour.
Tu pourrais mettre la balise code, quand tu mets des extaits de code, c'est plus lisible.

Dans ta requête t'as essayé de rajouter un ;
String requeted="delete from produit where ref='"+pref+"';";


As tu essayé d'afficher la requête SQL générée et de l’exécuter directement dans mysql ?
Messages postés
79
Date d'inscription
vendredi 19 août 2011
Statut
Membre
Dernière intervention
11 octobre 2011

ou se trouve la balise code et je ne vois pas ou j'ai rajouter un ;

bigboss
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
15
Bonjour la balise code est dans la barre d'outil d'édition lors que tu écris un message.

Actuellement ton code est le suivant
String requeted="delete from produit where ref='"+pref+"'";/* and '"+jdesigne.getText()+"' and '"+jprix.getText()+"' ";*/ 

il faut rajouter un ";" dans la requête sql que tu génére :
delete from produit where ref=XXXX;

/*avant*/
String requeted="delete from produit where ref='"+pref+"'";/* and '"+jdesigne.getText()+"' and '"+jprix.getText()+"' ";*/
/*après*/
String requeted="delete from produit where ref='"+pref+"';";/* and '"+jdesigne.getText()+"' and '"+jprix.getText()+"' ";*/
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
286
Bonjour,

Pour ajouter les balises qui entourent le code, c'est le troisième bouton en partant de la droite, et tu choisis ton langage.

ais program ne marche pas

Peux tu préciser ? Y'a t'il une exception ? Ou alors est ce que c'est juste que tes données n'ont pas été supprimées ?

As tu un Autocommit sur ta connexion ou alors as tu envoyé une requete COMMIT ? Est ce que les autres modif de la table que tu as fait fonctionnent ? Par exemple un upadate ? Est ce que tu as essayé de voir si le code était bien exécuté ? Avec des System.out.println() ?
Messages postés
79
Date d'inscription
vendredi 19 août 2011
Statut
Membre
Dernière intervention
11 octobre 2011

super ça marche mais pour le savoir il faut que je quitte mon EasyPhp et réouvrir comment remedier

bigboss
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
286
Alors c'est un problème de COMMIT. Au lieu de fermer et ré-ouvrir ton EasyPhp, envoi un COMMIT et ca fonctionnera.
Messages postés
79
Date d'inscription
vendredi 19 août 2011
Statut
Membre
Dernière intervention
11 octobre 2011

j'ai pas un Autocommit dans ma connexion et pas d'envoi d'une requete COMMIT comment on peut faire ça? mais l'insertion marche au fait lorsque j'effectue une suppression je constate que dans ma table elle est fait mais demeure sur mon interface utilisateur

bigboss
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
286
connexion.executeUpdate("COMMIT"); ou alors passe le autoCommit à true ce qui est le plus simple sans doute.

C'est le même soucis, quand tu fais une suppression via une invite de commande, il faut la supprimer en envoyant un COMMIT;

Tu devrais chercher de la doc sur les mécanisme COMMIT et ROLLBACK pour comprendre un peu pourquoi ca marche comme ca, c'est assez simple.