bonjour,
J'ai crée une classe Connexion_BDD qui permet de créer une instance de connexion à une base de données.
J'ai crée dans la classe fenêtre_selection_clients la fonction Afficher_Client( pour l'instant elle est dans cette classe, mais je vais la déplacer dans la classe Client), qui permet d'afficher les clients qui sont de type "particuliers"(il existe également le type "entreprise").
Le problème est que même si la connexion à la base de données s'effectue sans problème, il n'y a rien dans le resultset après execution de la requête.
Je ne comprends pas pourquoiet aimerais vraiment comprendre ce qui se passe
Je vous fais parvenir en fichier joint le détail du message d'erreur que je reçois.
Je vous transmets également le code des classes Connexion_BDD, Client et fenetre_selection_client.
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 package package_selection_clients; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; //import java.util.*; import java.util.ArrayList; public class fenetre_selection_clients extends JFrame implements ActionListener{ // ButtonGroup buttongroup_type_client; // private JPanel panel_choix_client; // private JPanel panBoutonAfficher ; // private JPanel panel_final; // private JLabel LAB_choix_client ; // private JRadioButton b1; // private JRadioButton b2; // private JButton boutonAfficher; // private String type_client; // private GridBagConstraints gbc ; // ArrayList listeClients; //declarationde la variable qui va contenir la requête de selection des clients particuliers private String requete_1; //declaration de la variable qui va contenir le resultat de la requête ResultSet rs ; // declaration de la variable de type Statement private Statement stmt=null; public fenetre_selection_clients(){ this.setTitle("Choix de clients"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //panel_final = new JPanel(new GridBagLayout()); panel_choix_client = new JPanel(new GridLayout(0,1)); LAB_choix_client = new JLabel("Veuillez choisir un type de client"); b1 = new JRadioButton("clients particuliers", false); panel_choix_client.add(b1); b1.setActionCommand("particuliers"); b2 = new JRadioButton("clients entreprises ", false); panel_choix_client.add(b2); b2.setActionCommand("entreprises"); buttongroup_type_client = new ButtonGroup(); buttongroup_type_client.add(b1); buttongroup_type_client.add(b2); panBoutonAfficher = new JPanel( new FlowLayout(FlowLayout.CENTER)); boutonAfficher = new JButton("AFFICHER"); boutonAfficher.addActionListener(this); panBoutonAfficher.add(boutonAfficher); this.getContentPane().add("Center",panel_choix_client); this.getContentPane().add("North",LAB_choix_client); this.getContentPane().add("South",panBoutonAfficher); pack(); this.setVisible(true); }// fin de constructeur public void actionPerformed(ActionEvent e) { type_client = this.buttongroup_type_client.getSelection().getActionCommand(); System.out.println("le type du client est "+type_client); Object source = e.getSource(); System.out.println("le bouton sur lequel on clique est le bouton Afficher"+(source==boutonAfficher)); if(source == boutonAfficher){ Afficher_clients() ; }// fin de if (source==boutonAfficher) }// fin de actionPerformed public void Afficher_clients(){//throws SQLException{ listeClients = new ArrayList(); try { requete_1 = "select ID_CLI, NOM_CLI, PRENOM_CLI, AD1_CLI, AD2_CLI, AD3_CLI from CLIENTS where TYPE_CLI = '" +type_client+ "' "; System.out.println(requete_1); //String requete_2="select ID_CLI, RAISON_SOC, AD1_CLI, AD2_CLI, AD3_CLI from CLIENTS where TYPE_CLI = '" +type_client+ "' "; Connexion_BDD conn = new Connexion_BDD(); System.out.println("la connexion est " + conn); conn.Connecter_BDD(); System.out.println("la connexion est fermée"+conn.getConnexionSQL().isClosed()); // L'exécution d'une requête SQL s'effectue via un objet de la classe java.sql.Statement . //C'est l'objet Connection qui nous fournira une référence d'objet Statement (à ne pas instancier directement ). Exemple : // Statement stat = con.createStatement(); System.out.println(conn.getConnexionSQL()); stmt = conn.getConnexionSQL().createStatement(); rs = stmt.executeQuery(requete_1); int step = rs.getRow(); System.out.println("le nombre de lignes du result set est "+step); System.out.println("il y a bien un autre resultat dans le resultset"+rs.next()); // System.out.println(rs.) while(rs.next()) { listeClients.add(new Client(rs)); }// fin de while for(int i=0; i<listeClients.size();i++){ ((Client)listeClients.get(i)).lancerEnigme(); }//fin de for }// fin de try catch(Exception e){ System.out.println("le message d'erreur est le suivant "+ e.toString()); System.out.println("voici une autre information"+e.getStackTrace()); }// fin de catch }//fin de AfficherClients }// fin de classe
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 package package_selection_clients; import java.util.*; import java.sql.*; public class Connexion_BDD { private String id_connexion; // declaration de la variable ConnexionSQL qui va contenir l'adresse d' une instance de la classe Connection // pour l'instant elle est initiallisée à null private Connection ConnexionSQL = null; public Connexion_BDD(){}// constructeur par défaut // création du getter qui va récuperer l'adresse de l'instance de la classe Connection créée public Connection getConnexionSQL(){ return ConnexionSQL; } public void Connecter_BDD(){ try { //L'interaction à un système de gestion de base de données réquiert en général au moins quatre étapes : // 1-Chargement du pilote //2-Etablissement de la connexion // 3-Exécution d'une requête //4-Exploitation des résultats System.out.println("chargement drivers......."); //1- chargement du pilote //On charge généralement le pilote par son nom; dans notre cas, il s'agit du driver driver odbc inclus dans le jdk //la variable driverOdbc possède le modificateur final , ce qui signifie que c'est une constante; on ne peut donc pas modifier sa valeur final String driverOdbc= "sun.jdbc.odbc.JdbcOdbcDriver"; // driver odbc inclus dans le jdk // Autochargement du driver Class.forName(driverOdbc).newInstance(); System.out.println("drivers chargés"); //Une fois le driver chargé en mémoire, nous pouvons obtenir une connexion via la méthode de classe getConnection() //de la classe DriverManager //L'instruction de création d'une connexion à la BDD est de la forme //Connection con = DriverManager.getConnection(URL, "user", "passwd"); // URL : url de connexion de la forme jdbc:sous-protocole:sous-nom // sous-protocole:identification du pilote: dans notre cas le nom du pilote(driver) est "odbc" // sous-nom : informations nécessaires au pilote pour la connexion (chemin, port, nom) // "passwd" : Mot de passe // "user" : Nom de l'utilisateur référencé par la base //on constate pour l'instant qu'il n'y a pas de mot de passe , ni de nom d'utilisateur précisé , dans la chaine de connexion ConnexionSQL = DriverManager.getConnection("jdbc:odbc:bdd_clients_1","",""); System.out.println("connection établie:" + ConnexionSQL); }//fin de try catch(Exception sqle){ System.out.println("la connexion n a pas pu être établie"+ sqle.getMessage()); }// fin de catch }// fin de fonction Connecter_BDD // --------------------------- }// fin de classe Connexion_BDDMerci beaucoup de m'aider à voir clair et à résoudre cette difficulté
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 package package_selection_clients; import java.sql.*; import java.util.ArrayList; import java.awt.*; import javax.swing.JOptionPane; import javax.swing.JTextPane; public class Client { private JTextPane jTextPane1; private String texte; public String id_client; public String nom_client; public String prenom_client; public String adresse_1_client; public String adresse_2_client; public String adresse_3_client; public String type_client; public Client(ResultSet res_set)throws SQLException{ id_client=res_set.getString(1); nom_client=res_set.getString(2); prenom_client=res_set.getString(3); adresse_1_client=res_set.getString(4); adresse_2_client=res_set.getString(5); adresse_3_client=res_set.getString(6); type_client=res_set.getString(7) ; texte = id_client + nom_client + prenom_client + adresse_1_client + adresse_2_client + adresse_3_client + type_client ; }// fin de constructeur de la classe Client public void lancerEnigme(){ //On crée le textfield qui contiendra le texte de l'énigme jTextPane1 = new JTextPane(); jTextPane1.setText(texte); jTextPane1.setPreferredSize(new Dimension(400, 200)); }// fin de lancer enigme }// fin de classe
Partager