Bonjour à tous
je suis occupé sur un projet java où j'utilise une base de données où je fais des ajouts, modifications, suppression et donc je voudrais afficher une JTable qui affiche le résultat d'une requete sql utilisant plusieurs table access
Imaginons car mon exemple est plus long, que j'ai une table club qui comprend plusieurs champs dont un indice (identifiant) et un libellé, j'ai une autre table joueur qui comprend toutes les informations concernant un joueur (numero, nom, prenom, adresse, ... et le club dans lequel il est affilié)
donc la requête SQL donnerait :
Select j.Nom, j.Prenom, j.Club, c.Libelle
From Joueur j, Club c
Where c.Indice = j.Club
and j.Club = indiceClubChoisi;
Je voudrais donc trouver le moyen d'afficher cette JTable
je vous mets un exemple de méthode d'une requete et la classe de la JTableModel s'y rapportant dans le cas où je n'utilise qu'une seule table access
Code Java :
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 public Vector<Joueur> getAllJoueurs() throws PasIdentification, AllJoueursException { Vector <Joueur> allJoueurs = new Vector <Joueur>(); try { Joueur joueur; String instructionSQL = "select * from Joueur order by NumeroAffiliation"; PreparedStatement prepStat = MyConnection.getConnect().prepareStatement(instructionSQL); ResultSet donnees = prepStat.executeQuery(); while(donnees.next()) { joueur = new Joueur(donnees.getInt(1),donnees.getString(2),donnees.getString(3), new GregorianCalendar(), donnees.getString(5), donnees.getString(6), donnees.getString(7), donnees.getInt(8), donnees.getInt(9),donnees.getString(10), donnees.getBoolean(11), donnees.getString(12), donnees.getString(13)); joueur.getDateNaiss().setTime(donnees.getDate(4)); allJoueurs.add(joueur); } } catch(SQLException e) { throw new AllJoueursException(e.getMessage()); } return allJoueurs; }
et voilà la classe qui crée la JTable
Code Java :
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 package Model; import java.util.Date; import java.util.Vector; import javax.swing.table.AbstractTableModel; public class AllJoueursModel extends AbstractTableModel { private Vector<String> columnNames = new Vector<String>(); private Vector<Joueur> vectJoueur = new Vector<Joueur>(); public AllJoueursModel(Vector<Joueur> vectAllJoueurs) { vectJoueur = vectAllJoueurs; columnNames.add("Numero affiliation"); columnNames.add("Nom"); columnNames.add("Prenom"); columnNames.add("Date naissance"); columnNames.add("Nationalite"); columnNames.add("Classement"); columnNames.add("Nom rue"); columnNames.add("Num rue"); columnNames.add("Code postal"); columnNames.add("Localite"); columnNames.add("Droitier"); columnNames.add("Club"); columnNames.add("Fonction"); } public int getColumnCount() { return columnNames.size(); } public int getRowCount() { return vectJoueur.size(); } public String getColumnName(int col) { return columnNames.elementAt(col); } public Object getValueAt(int row, int col) { Joueur j = vectJoueur.elementAt(row); switch (col) { case 0 : return j.getAffiliation(); case 1 : return j.getNom(); case 2 : return j.getPrenom(); case 3 : return j.getDateNaiss().getTime(); case 4 : return j.getNationalite(); case 5 : return j.getClassement(); case 6 : return j.getNomRue(); case 7 : return j.getNumeroRue(); case 8 : return j.getCodePostal(); case 9 : return j.getLocalite(); case 10: return j.getDroitier(); case 11: return j.getClub(); case 12: return j.getFonction(); default: return null; } } public Class<?> getColumnClass(int col) { Class c = Integer.class; switch (col) { case 0 : c = Integer.class; break; case 1 : c = String.class; break; case 2 : c = String.class; break; case 3 : c = Date.class; break; case 4 : c = String.class; break; case 5 : c = String.class; break; case 6 : c = String.class; break; case 7 : c = Integer.class; break; case 8 : c = Integer.class; break; case 9 : c = String.class; break; case 10: c = Boolean.class; break; case 11: c = String.class; break; case 12: c = String.class; break; } return c; } public Joueur getJoueurAtLine (int i) { return vectJoueur.elementAt(i); } }
PS : indiceClubChoisi étant obtenu par une JComboBox
PS 1 : A chaque table SQL correspond un objet, d'où le Joueur joueur et c'est pareil pour le club
si vous avez des questions sur le code, n'hesitez pas car je tourne en rond à tenter de trouver le moyen tout en suivant la logique que j'ai respecté
et déjà merci pour les conseils et/ou réponses
Partager