Probleme sur le code
Fermé
aichakhoumena2013
-
30 janv. 2013 à 02:45
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 30 janv. 2013 à 03:48
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 30 janv. 2013 à 03:48
A voir également:
- Probleme sur le code
- Le code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
1 réponse
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
30 janv. 2013 à 03:48
30 janv. 2013 à 03:48
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(); } } }