IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Non affichage d'un enregistrement d'une table de base de données


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 958
    Points : 141
    Points
    141
    Par défaut Non affichage d'un enregistrement d'une table de base de données
    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
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS]

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    System.out.println("il y a bien une autre resultat dans le resultset"+rs.next()); // <== là, ça va entrer à la première ligne et dans la boucle while, il passe à la seconde.
    // 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())
    A+.

  3. #3
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    Et oui le next() avance d'un cran dans la liste à chaque appel

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 958
    Points : 141
    Points
    141
    Par défaut non affichage d'un premier enregistrement.
    Merci beaucoup , le problème est donc résolu.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage d'une partie des données d'une table de Base de données
    Par zpico dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 15/05/2012, 11h47
  2. Sauvegarder un enregistrement dans une table de base de données
    Par souha2008 dans le forum Bases de données
    Réponses: 4
    Dernier message: 20/05/2008, 17h43
  3. Réponses: 6
    Dernier message: 25/03/2008, 15h32
  4. taille d'une table et base de données sql server
    Par debutantasp dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/01/2008, 01h37
  5. [VB.NET] Comment créer une table dans base de données ?
    Par ptitesouris dans le forum VB.NET
    Réponses: 3
    Dernier message: 03/05/2006, 08h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo