Voila donc j'ai un bouton dans mon code principal de ma fenetre :
Donc ce bouton comme ces paramètre le montre il lance le programme ExecutionRequete que voici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 public class GestionSQLFenetre extends JFrame{ private JLabel label,label2,label3,numeroEtudiantLabel,nomLabel,prenomLabel,numVoieLabel,voieLabel,villeLabel,codePostalLabel; private JComboBox liste,liste2; private JPanel panel; private JButton bouton1,bouton2,bouton3; private JTextField numeroEtudiantField,nomField,prenomField,numVoieField,voieField,villeField,codePostalField; public GestionSQLFenetre() { super(); build(); } private void build(){ setTitle("Gestion de la base de donnée"); //On donne un titre à l'application setSize(470,400); //On donne une taille à notre fenêtre setLocationRelativeTo(null); //On centre la fenêtre sur l'écran setResizable(false); //On interdit la redimensionnement de la fenêtre setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix setContentPane(buildContentPane()); } private JPanel buildContentPane(){ //.... bouton3 = new JButton(new ExecutionRequete(this, "Executer")); panel.add(bouton3); //On ajoute le bouton au panel bouton3.setVisible(false); //.....
Si la conditions est juste ( elle fonctionne tester avec boite de dialogue ) cela me lance la class CreationEtudiant(); donc qui se trouve dans le programme CreationEtudiant que voici
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 import java.awt.event.ActionEvent; import java.awt.*; import javax.swing.*; public class ExecutionRequete extends AbstractAction { private GestionSQLFenetre fenetre; private CreationEtudiant createEtudiant; public ExecutionRequete(GestionSQLFenetre fenetre, String texte) { super(texte); this.fenetre = fenetre; } public ExecutionRequete(CreationEtudiant createEtudiant, String texte){ super(texte); this.createEtudiant = createEtudiant; } public void actionPerformed(ActionEvent e) { //Action lors du clic sur le bouton1 String gestion = fenetre.getModelGestion().getSelectedGestion(); String gestion2 = fenetre.getModelGestion2().getSelectedGestion2(); if (("Ajouter".equals(gestion2))&&("Gestion Etudiant".equals(gestion))){ createEtudiant.CreationEtudiant(); } } }
Mais a ce niveau la dans la console il me sort :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 public class CreationEtudiant { private GestionSQLFenetre fenetre; private CreationEtudiant createEtudiant; public void CreationEtudiant(){ try{ // Dec des variable String numeroEtudiant,nom,prenom,numVoie,voie,ville,requete,idville,codePostal; Statement stmt=null; ResultSet rs; numeroEtudiant = fenetre.getNumeroEtudiantField().getText(); nom = fenetre.getNomField().getText(); prenom = fenetre.getPrenomField().getText(); numVoie = fenetre.getNumVoieField().getText(); voie = fenetre.getVoieField().getText(); ville = fenetre.getVilleField().getText(); codePostal = fenetre.getCodePostalField().getText(); //connexion Class.forName("com.mysql.jdbc.Driver"); String url ="jdbc:mysql://localhost/java"; // Pour les étudiants : String url="jdbc:mysql://src-mysql/<nom de votre base de données"; System.out.println("Connexion a la base de donnees"); Connection con = DriverManager.getConnection(url,"root", ""); // Pour les étudiants SRC utiliser utilisateur et mot de passe de connexion à la base de données System.out.println("Connecte"); stmt = con.createStatement(); //Verification de l'existence de la ville dans la base de donnée requete = "SELECT idville FROM ville WHERE ville='"+ville+"';"; rs = stmt.executeQuery(requete); if (rs.next()){ idville = rs.getString ("idville"); } else { idville = ""; } if ( idville == "" ) { // La ville n'existe pas // Insertion de la ville dans la table Ville requete = "INSERT INTO ville VALUES (NULL,'"+ville+"','"+codePostal+"');"; stmt.executeUpdate(requete); System.out.println(requete); // Insertion de la ville dans la table Adresse requete = "INSERT INTO adresse VALUES (NULL,'"+voie+"','"+numVoie+"',(SELECT idville FROM ville WHERE ville='"+ville+"'));"; stmt.executeUpdate(requete); System.out.println(requete); } else { // La ville Existe // Ajout d'une adresse dans la Table adresse avec l'idville existant requete = "INSERT INTO adresse VALUES (NULL,'"+voie+"','"+numVoie+"',(SELECT idville FROM ville WHERE ville='"+ville+"'));"; stmt.executeUpdate(requete); System.out.println(requete); } //Requete d'insertion dans la table Etudiants requete="INSERT INTO etudiants VALUES ('"+numeroEtudiant+"','"+nom+"','"+prenom+"',(SELECT idadresse FROM adresse WHERE voie = '"+voie+"' AND numVoie = '"+numVoie+"'));"; stmt.executeUpdate(requete); System.out.println(requete); //deconnexion con.close(); System.out.println("Deconnecté"); fenetre.getLabel3().setText("La requete d'insertion d'un étudiant a été effectué avec succès"); }catch (Exception e){ e.printStackTrace(); } } }
Donc pour récapituler :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 --------------------Configuration: <Default>-------------------- Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at ExecutionRequete.actionPerformed(ExecutionRequete.java:29) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:5501) at javax.swing.JComponent.processMouseEvent(JComponent.java:3135) at java.awt.Component.processEvent(Component.java:5266) at java.awt.Container.processEvent(Container.java:1966) at java.awt.Component.dispatchEventImpl(Component.java:3968) at java.awt.Container.dispatchEventImpl(Container.java:2024) at java.awt.Component.dispatchEvent(Component.java:3803) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822) at java.awt.Container.dispatchEventImpl(Container.java:2010) at java.awt.Window.dispatchEventImpl(Window.java:1778) at java.awt.Component.dispatchEvent(Component.java:3803) at java.awt.EventQueue.dispatchEvent(EventQueue.java:463) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
GestionSQLFenetre -> Appuie sur le bouton -> ExecutionRequete -> CreationEtudiant mais a ce dernier niveau cela ne fonctionne donc pas.
Le seul moyen que j'ai trouver de faire fonctionner mon code CreationEtudiant et de mettre directement la class dans GestionSQLFentre
et donc de l'appeller depuis ExecutionRequete comme ceci :
Et la cela fonctionne mais ayant une 50aine de code de la même taille cela serai le bordel de toute mettre direct dedans.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 //........ private GestionSQLFenetre fenetre; //.......... fenetre.CreationEtudiant();
Partager