Bonjour,
J'ai crée une petite application qui permet de voir dans un JTextPane d'une JFrame nommée fenetre_affichage_clients, des clients particuliers( c'est leur type en opposition à entreprises)selectionnés par un utilisateur .
Dans la classe client, j'ai crée la méthode Afficher_clients qui permet d'afficher les coordonnées de tous les clients particuliers dans ce JTextPane nommé JTextPane1 appartenant à une JFrame créée dynamiquement auparavant et nommée fenetre_affichage_clients.
La méthode Afficher_clients est appelée dans la méthode actionPerformed de la classe fenetre_selection_clients
même si la fenêtre affichage_clients s'affiche bien, le contenu du JTextPane JtextPane1 s'affiche mais il manque le premier enregistrement de la table de la base de données .
Pouvez-vous m'expliquer pourquoi.
Je vous informe que la connexion à la base de données s'effectue très bien(drivers chargés etc )
juste un détail: pouvez-vous m'expliquer comment passer à la ligne quand le contenu d'un enregistrement est affiché et que je veux afficher le contenu du second à la ligne.
Je vous remercie encore de votre aide
new_wave.
Je vous transmets le code de toutes les classes créées :fenetre_selection_clients, Client et Connexion_BDD; je pense que les "marqueurs" apparaissant en invite de console du fait des instructions System.out.println ne sont pas inutiles du tout pour aider à comprendre ce qui se passe .
Pour finir, jugez vous satisfaisant le contenu de mes classes oub pensez-vous qu'il vaut mieux les organiser autrement
Merci à vous
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 package package_selection_clients; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; //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; // public static String choix_type_client; // public fenetre_selection_clients(){ this.setTitle("Choix de clients"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 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) { choix_type_client = this.buttongroup_type_client.getSelection().getActionCommand(); System.out.println("le type du client est "+choix_type_client); Object source = e.getSource(); System.out.println("le bouton sur lequel on clique est le bouton Afficher"+(source==boutonAfficher)); if(source == boutonAfficher){ Client.Afficher_clients() ; }// fin de if (source==boutonAfficher) }// fin de actionPerformed }// 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
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 package package_selection_clients; import java.sql.*; import java.util.ArrayList; import java.awt.*; import javax.swing.JOptionPane; import javax.swing.JTextPane; import javax.swing.JFrame; public class Client { private static JTextPane jTextPane1; private static JFrame fenetre_affichage_clients; private static String texte_final; private String texte; private String id_client; private String nom_client; private String prenom_client; private String adresse_1_client; private String adresse_2_client; private String adresse_3_client; private static String type_client; //ID_CLI, NOM_CLI, PRENOM_CLI, AD1_CLI, AD2_CLI, AD3_CLI public Client(ResultSet res_set)throws SQLException{ id_client=res_set.getString(1); System.out.println(id_client); nom_client=res_set.getString(2); System.out.println(nom_client); prenom_client=res_set.getString(3); System.out.println(prenom_client); adresse_1_client=res_set.getString(4); System.out.println(adresse_1_client); adresse_2_client=res_set.getString(5); System.out.println(adresse_2_client); adresse_3_client=res_set.getString(6); System.out.println(adresse_3_client); type_client=res_set.getString(7) ; //type_client= fenetre_selection //texte = rs.getString(1)+ rs.getString(2)+ rs.getString(3)+rs.getString(4)+ rs.getString(5)+rs.getString(6)+rs.getString(7); texte = id_client + nom_client + prenom_client + adresse_1_client + adresse_2_client + adresse_3_client + type_client ; texte_final=""; System.out.println("le texte du constructeur de la classe client est "+texte); }// fin de constructeur de la classe Client public static void Afficher_clients(){//throws SQLException{ // long start = System.currentTimeMillis(); try { Connexion_BDD conn1= new Connexion_BDD(); conn1.Connecter_BDD(); /*fenetre_affichage_clients= new JFrame(); fenetre_affichage_clients.setTitle("affichage des clients "); jTextPane1 = new JTextPane(); jTextPane1.setPreferredSize(new Dimension(400, 200));*/ for(int i=0; i<Connexion_BDD.listeClients.size();i++){ ((Client)Connexion_BDD.listeClients.get(i)).lancerClient(); }//fin de for System.out.println("la valeur de la variable texte_final après tous les appels de lancerClient est "+texte_final); fenetre_affichage_clients= new JFrame(); fenetre_affichage_clients.getContentPane().setLayout(new BorderLayout()); fenetre_affichage_clients.setTitle("affichage des clients "); jTextPane1 = new JTextPane(); jTextPane1.setText(texte_final); jTextPane1.setPreferredSize(new Dimension(400, 200)); fenetre_affichage_clients.getContentPane().add(jTextPane1, BorderLayout.NORTH); fenetre_affichage_clients.pack(); fenetre_affichage_clients.setVisible(true); }// 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 public void lancerClient(){ //On crée le textfield qui contiendra le texte de l'énigme System.out.println("le contenu de la variable texte de la méthode lancerClient est "+texte); //jTextPane1.setPreferredSize(new Dimension(400, 200)); texte_final = texte_final + texte; System.out.println("la valeur de texte_final dans la méthode lancerClient est "+texte_final ); }// fin de lancerClient }// 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
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 package package_selection_clients; import java.util.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; 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; // declaration de la variable de type Statement //L'exécution d'une requête SQL s'effectue via un objet de la classe java.sql.Statement . // objet Statement => instruction SQL . C'est cet objet qui exécute les requêtes SQL et qui retourne les résultats. private Statement stmt = null; //declarationde la variable qui va contenir la requête de selection des clients particuliers ResultSet rs = null; //declaration de la variable requete_1 qui va contenir le texte de la requête vers la base de données (BDD) private String requete_1 = ""; //declaration de la variable statique listeclients de type ArrayList. //Cette ArrayList est destinée à contenir des éléments de type Clients qui sont soit particuliers soit des entreprises static ArrayList listeClients; // création du getter qui va récupéret l'adresse de l'instance de la classe Connection créée public Connection getConnexionSQL(){ return ConnexionSQL; } public Connexion_BDD(){ }// constructeur par défaut 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 //declaration de la variable driverOdbc ; elle possède le modificateur final , ce qui signifie que c'est une constante; on ne peut donc pas modifier sa valeur , //une fois qu'elle edt initialisée //si je la déclare au niveau des autes varaibles , je suis contrainte de lui affecter une valeur en même temps; //j'ai préféré initialiszer cette variable à ce niveau , une fois abordée la notion de driver 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); /* L'exécution d'une requête SQL s'effectue via un objet de la classe java.sql.Statement . * objet Statement => instruction SQL . C'est cet objet qui exécute les requêtes SQL et qui retourne les résultats. C'est l'objet Connection qui fournit une référence d'objet( adresse d'une instance )de type Statement (à ne pas instancier directement ). Exemple : Statement stat = con.createStatement(); */ stmt = ConnexionSQL.createStatement(); requete_1 = "select ID_CLI, NOM_CLI, PRENOM_CLI, AD1_CLI, AD2_CLI, AD3_CLI, TYPE_CLI from CLIENTS where TYPE_CLI = '" +fenetre_selection_clients.choix_type_client+ "' "; /*Le retour d'un ordre executeQuery(...) est un objet de type ResultSet , une collection de lignes constituées de 1 à n attributs (colonnes). Pour accéder à la première ligne du résultat, il est nécessaire d'appeler la méthode next() , pour passer à la ligne suivante, il suffit d'appeler de nouveau cette méthode, etc. */ 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 une autre resultat dans le resultset"+rs.next()); // initialisation de la varaible listeClients //tant que l'instance rs de la classe resultset contiendra un resultat qui est en fait un Client, j'ajoute ce client à la ArrayList listeclients listeClients = new ArrayList(); while(rs.next()) { listeClients.add(new Client(rs)); }// fin de while System.out.println("le nombre d elements de listeClients est "+listeClients.size()); }//fin de try catch(Exception sqle){ //System.out.println("la connexion n a pas pu être établie"+ sqle.getMessage()); System.out.println("le message d'erreur est le suivant "+ sqle.getMessage()); }// fin de catch }// fin de fonction Connecter_BDD // --------------------------- }// fin de classe Connexion_BDD
Partager