Probleme sur le code
aichakhoumena2013
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
j'ai une table medecin et je veux quand j'entre le ID_MEDECIN
d'un medecin et je clique sur le button ,il le supprime,mais le code il ne fait pas ça et il affiche pas des erreurs
Le code est sur NetBeans:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import javax.swing.*;
public class SupprimerMedecin extends JFrame implements ActionListener{
JButton Afficher;
JButton quitter;
JButton Supprimer;
JLabel ID_Medecin;
JPanel panneau,panneau1;
public static String sql,sql1;
//public static String str3;
public static JTextField id_medecin;
public SupprimerMedecin() {
super("SupprimerMedecin");
ID_Medecin=new JLabel("ID_MEDECIN");
id_medecin=new JTextField(20);
Supprimer = new JButton("Supprimer"); Afficher = new JButton("Afficher"); quitter = new JButton("quitter");panneau = new JPanel();panneau1 = new JPanel();
panneau.setLayout(new BorderLayout());
this.add(BorderLayout.WEST,panneau1);
Supprimer.addActionListener(this);
Afficher.addActionListener(this);
quitter.addActionListener(this);
panneau1.add(ID_Medecin);
panneau1.add( id_medecin);
panneau1.add(Supprimer);
panneau1.add(Afficher);
panneau1.add(quitter);
panneau.add(panneau1);
setContentPane(panneau);
this.setResizable(false);
setVisible(true) ;
setSize(250, 600);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==Supprimer){
String str3 =id_medecin.getText();
// String a = "'";String z = ",";
// sql4= "alter table medecin drop column ID_MEDECIN ='"+str3+"'";
sql= "delete from medecin where ID_MEDECIN ='"+str3+"'";
// System.out.println(sql4);
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:oracl3", "cabinet",
"2013");
Statement stmt = connection.createStatement();
sql1="select * from medecin";
ResultSet rs = stmt.executeQuery(sql);
ResultSet rs1 = stmt.executeQuery(sql1);
while (rs1.next()) {
System.out.println(rs1.getString(1));
System.out.println(rs1.getString(2));
System.out.println(rs1.getString(3));
System.out.println(rs1.getString(4));
}
}
catch (ClassNotFoundException i) {
System.out.println("Where is your Oracle JDBC Driver?");
i.printStackTrace();
} catch (SQLException i) {
System.out.println("Connection Failed! Check output console");
i.printStackTrace();
}
}
if(e.getSource()==quitter){
System.exit(0);
}
if(e.getSource()==Afficher){
ListeMedecin.f1.setVisible(true);
}
}
public static void main(String args[]){
JFrame f2 = new SupprimerMedecin();
}
}
aidez moi,svp
j'ai une table medecin et je veux quand j'entre le ID_MEDECIN
d'un medecin et je clique sur le button ,il le supprime,mais le code il ne fait pas ça et il affiche pas des erreurs
Le code est sur NetBeans:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import javax.swing.*;
public class SupprimerMedecin extends JFrame implements ActionListener{
JButton Afficher;
JButton quitter;
JButton Supprimer;
JLabel ID_Medecin;
JPanel panneau,panneau1;
public static String sql,sql1;
//public static String str3;
public static JTextField id_medecin;
public SupprimerMedecin() {
super("SupprimerMedecin");
ID_Medecin=new JLabel("ID_MEDECIN");
id_medecin=new JTextField(20);
Supprimer = new JButton("Supprimer"); Afficher = new JButton("Afficher"); quitter = new JButton("quitter");panneau = new JPanel();panneau1 = new JPanel();
panneau.setLayout(new BorderLayout());
this.add(BorderLayout.WEST,panneau1);
Supprimer.addActionListener(this);
Afficher.addActionListener(this);
quitter.addActionListener(this);
panneau1.add(ID_Medecin);
panneau1.add( id_medecin);
panneau1.add(Supprimer);
panneau1.add(Afficher);
panneau1.add(quitter);
panneau.add(panneau1);
setContentPane(panneau);
this.setResizable(false);
setVisible(true) ;
setSize(250, 600);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==Supprimer){
String str3 =id_medecin.getText();
// String a = "'";String z = ",";
// sql4= "alter table medecin drop column ID_MEDECIN ='"+str3+"'";
sql= "delete from medecin where ID_MEDECIN ='"+str3+"'";
// System.out.println(sql4);
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:oracl3", "cabinet",
"2013");
Statement stmt = connection.createStatement();
sql1="select * from medecin";
ResultSet rs = stmt.executeQuery(sql);
ResultSet rs1 = stmt.executeQuery(sql1);
while (rs1.next()) {
System.out.println(rs1.getString(1));
System.out.println(rs1.getString(2));
System.out.println(rs1.getString(3));
System.out.println(rs1.getString(4));
}
}
catch (ClassNotFoundException i) {
System.out.println("Where is your Oracle JDBC Driver?");
i.printStackTrace();
} catch (SQLException i) {
System.out.println("Connection Failed! Check output console");
i.printStackTrace();
}
}
if(e.getSource()==quitter){
System.exit(0);
}
if(e.getSource()==Afficher){
ListeMedecin.f1.setVisible(true);
}
}
public static void main(String args[]){
JFrame f2 = new SupprimerMedecin();
}
}
aidez moi,svp
A voir également:
- Probleme sur le code
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
1 réponse
A priori le Class.forName devrait être fait une seule fois, au début de l'application, pas à chaque fois que tu appuies sur un bouton !
Ensuite, sql et sql1 et id_medecin sont déclarées static, il est donc aberrant qu'elles soient modifiées à chaque action ! De manière générale, évite de mettre des attributs là où des variables locales suffisent. Et utilise l'encapsulation en déclarant private, et idéalement final, tout ce qui peut l'être !
Au passage : très mauvaise idée de déclarer deux objets différents en les appelant ID_Medecin, et id_medecin, c'est confusant d'avoir deux noms aussi proches, d'autant qu'aucun des deux ne respecte les conventions de nommage Java.
De plus : jamais tu ne fermes les ResultSet, Statement, et Copnnection, c'est une erreur très grave !
Après, je ne connais pas grand chose aux bdd, donc je ne peux pas contrôler tes requêtes, mais voici déjà un beau code bien propre, ce sera plus agréable à regarder (si ce n'est pour toi, au moins pour ceux qui prendront la suite de cette discussion).
Ensuite, sql et sql1 et id_medecin sont déclarées static, il est donc aberrant qu'elles soient modifiées à chaque action ! De manière générale, évite de mettre des attributs là où des variables locales suffisent. Et utilise l'encapsulation en déclarant private, et idéalement final, tout ce qui peut l'être !
Au passage : très mauvaise idée de déclarer deux objets différents en les appelant ID_Medecin, et id_medecin, c'est confusant d'avoir deux noms aussi proches, d'autant qu'aucun des deux ne respecte les conventions de nommage Java.
De plus : jamais tu ne fermes les ResultSet, Statement, et Copnnection, c'est une erreur très grave !
Après, je ne connais pas grand chose aux bdd, donc je ne peux pas contrôler tes requêtes, mais voici déjà un beau code bien propre, ce sera plus agréable à regarder (si ce n'est pour toi, au moins pour ceux qui prendront la suite de cette discussion).
import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; public class SupprimerMedecin extends JFrame implements ActionListener { private static final long serialVersionUID = 1; private final JTextField txtIdMedecin; private final JButton btnAfficher, btnQuitter, btnSupprimer; private final Connection conn; public SupprimerMedecin(Connection connection) { conn = connection; setTitle("SupprimerMedecin"); setLayout(new FlowLayout()); setSize(250, 600); setResizable(false); this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); add(new JLabel("ID_MEDECIN")); txtIdMedecin=new JTextField(20); add(txtIdMedecin); btnSupprimer = new JButton("Supprimer"); btnSupprimer.addActionListener(this); add(btnSupprimer); btnAfficher = new JButton("Afficher"); btnAfficher.addActionListener(this); add(btnAfficher); btnQuitter = new JButton("quitter"); btnQuitter.addActionListener(this); add(btnQuitter); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource()==btnSupprimer) { try { Statement stmt = conn.createStatement(); String sql = String.format("delete from medecin where ID_MEDECIN ='%s'",txtIdMedecin.getText()); ResultSet rs = stmt.executeQuery(sql); rs.close(); String sql1 = "select * from medecin"; ResultSet rs1 = stmt.executeQuery(sql1); while (rs1.next()) { System.out.println(rs1.getString(1)); System.out.println(rs1.getString(2)); System.out.println(rs1.getString(3)); System.out.println(rs1.getString(4)); } rs1.close(); stmt.close(); } catch (SQLException ex) { ex.printStackTrace(); } } if(e.getSource()==btnQuitter) { try { conn.close(); } catch (SQLException ex) { ex.printStackTrace(); } System.exit(0); } if(e.getSource()==btnAfficher) { //ListeMedecin.f1.setVisible(true); //TODO } } public static void main(String[] args) { try { Class.forName("oracle.jdbc.driver.OracleDriver"); Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oracl3", "cabinet", "2013"); new SupprimerMedecin(connection); } catch (ClassNotFoundException e) { System.err.println("Where is your Oracle JDBC Driver?"); e.printStackTrace(); } catch (SQLException e) { System.err.println("Connection Failed! Check output console"); e.printStackTrace(); } } }