Voila j'aimerai faire un grand lien entre 3 constructeur ce qui n'est pas simple
GestionSQLFenetre, ExecutionRequete et CreationEtudiant son mes 3 constructeur :
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 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; private JMenuBar menuBar; public GestionSQLFenetre() { super(); build(); } private void build(){ //.................. } private JPanel buildContentPane(){ //................... } //...... }
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 CreationEtudiant createEtudiant;*/ private GestionSQLFenetre fenetre; /*public ExecutionRequete(CreationEtudiant createEtudiant, String texte){ super(texte); this.createEtudiant = createEtudiant; }*/ public ExecutionRequete(GestionSQLFenetre fenetre, String texte) { super(texte); this.fenetre = fenetre; } 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))){ CreationEtudiant test = new CreationEtudiant(); } } }Donc tout simplement quand j'appuie sur un bouton qui est dans GestionSQLFenete il me lance ExecutionRequete jusqu'a la ca marche, ensuite, il récupere des infos d'une JcomboBox qui est dans GestionSQLFenetre, ca marche aussi ensuite et il vérifie par la conditions si ces les bonne ,pareil cela marche et c'est a ce niveau la que ca bug.
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
71
72
73
74
75
76
77 public class CreationEtudiant { private GestionSQLFenetre fenetre; public CreationEtudiant(GestionSQLFenetre fenetre){ this.fenetre = fenetre; } public CreationEtudiant(){ try{ System.out.println("marche"); System.out.println(fenetre); // 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(); System.out.println("marche"); //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(); } } }
Quand j'appelle la fonction CreationEtudiant par :
CreationEtudiant test = new CreationEtudiant();
A sans problème il se lance mais il n'arrive pas a récup les info qui sont dans les JtextField qui sont dans GestionSQLFenetre car il ne comprend pas le lien pourtant il est défini par :
public CreationEtudiant(GestionSQLFenetre fenetre){
this.fenetre = fenetre;
}
Et si je lui di de l'executé avec fenetre en parametre directement comme cela :
CreationEtudiant test = new CreationEtudiant(fenetre);
Et bien c'est pire rien du tout, il ne me lance meme pas la...
Merci d'avance de votre aide
Partager