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

Composants Java Discussion :

Base de données et JTable


Sujet :

Composants Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 261
    Points : 64
    Points
    64
    Par défaut Base de données et JTable
    Bonjour tout le monde, jai une apllication java connecter avec une base de données, j'ai relié 2 listes deroulantes ( des Choice) a cette base pour quelles affichent seulement les données presente dans celle-ci.
    J'aimerais faire de meme pour une JTable seulement cela ne fonctionne pas.
    Voila mon code

    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
    catch (SQLException se) 
    		{
    			JOptionPane.showMessageDialog(this,sql+"\n"+se.getMessage(),"Chargement de la table impossible !",JOptionPane.ERROR_MESSAGE);
    		}
     
    		try 
    		{	
    			Statement requete1 = ConnectionBD.createStatement();
    			sql="select DISTINCT * from options,etudiant WHERE etudiant.code_option=options.code_option ORDER BY options.code_option";
    			ResultSet resultat = requete1.executeQuery(sql);
    			while (resultat.next()) 
    			{
    				tEtud.ajoute(resultat.getString(1)+resultat.getString(2));
     
    			}
    		}
    		catch (SQLException se) 
    		{
    			JOptionPane.showMessageDialog(this,sql+"\n"+se.getMessage(),"Chargement de la table impossible !",JOptionPane.ERROR_MESSAGE);
    		}

    tEtud est ma JTable

    merci de votre aide

  2. #2
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    qu'est ce qui ne marche pas ?

    Tu as une exception ?

    Faire voir le code de ajoute() ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 261
    Points : 64
    Points
    64
    Par défaut
    bah enfet il me souligne ajoute, il me dit que je ne peut pas utiliser la methode ajoute avec une table

    Il y aurai til une autre méthode??

  4. #4
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut
    bah enfet il me souligne ajoute, il me dit que je ne peut pas utiliser la methode ajoute avec une table

    Il y aurai til une autre méthode??
    y a pas de méthode ajoute ni même de méthode add ou autre chose ,
    pour récuperer tes données de ta base , tu dois créer un modele de tableau
    comme ceci :
    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
     
    public class MonModele extends AbstractTableModel
    {
       // Constructeur
      public MonModele
    {
         // instructions d'initialisations
    }
     
     
    public int getColumnCount() // surcharger la méthode de la classe parente
    {          
    // récuperer depuis ta base le nombre de colonnes                       
    }
     
    public String getColumnName(int col) // de même
    {
    //récuperer depuis ta base le noms de tes colonnes
     }
     
    public int getRowCount() 
    {
            // récuperer le nombre de lignes
    }
    public Object getValueAt(int row,int col) // c'est
    {
            // c'est la que tu recupere les données qui vont être affichés dans ton JTable
            // pour ça tu dois déja avoir extrait tes données de ta base 
           // que tu as mise dns un ResultSet par exemple
    }
    }
     
    public class MonProgramme {
    // aprés tu initialises ton JTable
    public static main(String [] args)
    {
        JTable table = new JTable(new MonModele);
        JScrollPane pane = new JScrollPane(table);
     
    }
     
    }
    Where is my mind

  5. #5
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 261
    Points : 64
    Points
    64
    Par défaut
    ah d'accord merci de ton aide mais que dois je mettre dans les fonctions??

  6. #6
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut
    voilà un exemple plus spécifique à ton probleme :

    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
     
    public class CommandeModel extends AbstractTableModel
    {
    	private ResultSetMetaData rsmd;  // les méta-données de la base
    	private ResultSet Table;       // les données se trouvent ici
     
    	public CommandeModel()
    	{
    		String Requete = "SELECT COMMANDE.NUM,DATEC,NOM,PRENOM,COMMANDE.REF,FACT,DATEV,DATEP "+
    		"FROM CLIENT,COMMANDE,VENTE "+
    		"WHERE CLIENT.NUM=COMMANDE.CLI "+
    		"and FACT=VENTE.NUM ";
    		try
    		{
    			Table = stat.executeQuery(Requete);
    			rsmd = Table.getMetaData();
    		}
    		catch (SQLException e)   {System.out.println(e.getMessage()); }
     
    	}
     
     
    	public int getColumnCount() 
    	{
    		try
    		{
    			return rsmd.getColumnCount();
    		}
    		catch (SQLException e)   { return 0 ;}
     
    	}
     
    	public int getRowCount() {
    		try
    		{
    			Table.last();
    			return Table.getRow();
    		}
    		catch (SQLException e)   { return 0 ;}
    	}
     
    	public String getColumnName(int col)
    	{
    		try
    		{
    			return rsmd.getColumnName(col +1);
    		}
     
    		catch (SQLException e){return "";}
    	}
     
     
    	public Object getValueAt(int ligne, int col) 
    	{
    		try
    		{
    			Table.absolute(ligne + 1);
    			return Table.getObject(col +1);
    		}
     
    		catch (SQLException e) { return null;    }
     
    	}

    aprés tu fais comme je t'ai montré en haut
    Where is my mind

  7. #7
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 261
    Points : 64
    Points
    64
    Par défaut
    merci bien mais avrai dire je ne comprend pas grand chose

    jusqua present javais cré de cette facon la JTable en y inseran des données moi meme mais maintenant pour que les données proviennent de la base comment dois je tout modifier???


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    JTable tEtud =new JTable();
    Object[] [] donnees = {{"Marco","Polo"},{"Mélina","Petit"},{"George","Harry"},{"James","Brun"},{"Roger","Pierre"}};
    		String[]titre = { "Nom", "Prénom"};
    		tEtud = new JTable(donnees,titre);
    		JScrollPane nomPrenom;
    		nomPrenom = new JScrollPane(tEtud);
    		nomPrenom.setPreferredSize(new Dimension(500,400));
    pTab.add(nomPrenom, c);

  8. #8
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut
    le modèle : c'est lui qui va chercher toutes les infos concernant ta base (titres de colonnes , données à afficher)

    en fait les méthodes suivantes : getColumnCount() , getRowCount(),getColumnName(col),getValueAt(ligne,col) ont été surchargés pour qu'elles se chargent de récuperer toutes les données nécéssaires à l'affichage.

    le modèle traite les données et la JTable ne fait qu'afficher ce que le modèle a recuperé comme infos ( c'est le Design Pattern MVC (Modele , Vue et Controleur qui est la base de fonctionnement de toute la bibliothèque Swing)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    JTable tEtud =new JTable();
    Object[] [] donnees = {{"Marco","Polo"},{"Mélina","Petit"},{"George","Harry"},{"James","Brun"},{"Roger","Pierre"}};
    		String[]titre = { "Nom", "Prénom"};
    		tEtud = new JTable(donnees,titre);
    		JScrollPane nomPrenom;
    		nomPrenom = new JScrollPane(tEtud);
    		nomPrenom.setPreferredSize(new Dimension(500,400));
    pTab.add(nomPrenom, c);
    cette méthode est tout a fait exact , mais ne s'appliquent pas aux données qui changent tout le temps (comme une base de données par exemple)

    ta méthode est statique et la mienne est dynamique
    Where is my mind

  9. #9
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 261
    Points : 64
    Points
    64
    Par défaut
    oui c'est axacte mais justement je voudrais la rendre dynamique et je comprend un peu mieux maintenant grace a ton aide mais je ne voit toujours pas comment faire je bloque des le debut deja

    Pourrais tu m'aider de AàZ stp merci bien

  10. #10
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    oui c'est axacte mais justement je voudrais la rendre dynamique et je comprend un peu mieux maintenant grace a ton aide mais je ne voit toujours pas comment faire je bloque des le debut deja
     
    Pourrais tu m'aider de AàZ stp merci bien
    ben , je t'ai déja montré l'essentiel ;

    je suis de bonne humeur aujourd'hui voilà un code :
    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
     
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.AbstractTableModel;
     
    public class TableDemo extends JFrame
    {
     
        public static void main(Strinargs[] g) 
    {
            super("un tableau de données"); // appeler le constructeur parent
     
            JTable table = new JTable(new TonModel ()); // instancier le
    // tableau avec un modele prédéfini
            table.setPreferredScrollableViewportSize(new Dimension(500, 70));
     
            //creer le scrollPane qui va contenir le JTable
            JScrollPane scrollPane = new JScrollPane(table);
     
     
            this.getContentPane(scrollPane);
            this.setVisible(true);
        }
     
      private class TonModel extends AbstractTableModel
    {
    	private ResultSetMetaData rsmd;  // les méta-données de la base
    	private ResultSet Table;       // les données se trouvent ici
     
    	public TonModel()
    	{
     
    			String sql="select DISTINCT * from options,etudiant WHERE etudiant.code_option=options.code_option ORDER BY options.code_option";
     
    		try
    		{
                            Statement stat = ConnectionBD.createStatement(); 
    			Table = stat.executeQuery(sql);
    			rsmd = Table.getMetaData();
    		}
    		catch (SQLException e)   {System.out.println(e.getMessage()); }
     
    	}
     
     
    	public int getColumnCount() 
    	{
    		try
    		{
    			return rsmd.getColumnCount();
    		}
    		catch (SQLException e)   { return 0 ;}
     
    	}
     
    	public int getRowCount() {
    		try
    		{
    			Table.last();
    			return Table.getRow();
    		}
    		catch (SQLException e)   { return 0 ;}
    	}
     
    	public String getColumnName(int col)
    	{
    		try
    		{
    			return rsmd.getColumnName(col +1);
    		}
     
    		catch (SQLException e){return "";}
    	}
     
     
    	public Object getValueAt(int ligne, int col) 
    	{
    		try
    		{
    			Table.absolute(ligne + 1);
    			return Table.getObject(col +1);
    		}
     
    		catch (SQLException e) { return null;    }
     
    	}
    je vois pas ce que je peux faire de plus

    mais ne t'attends pas à ce que je fasse ton travail , il faut se casser la tête un peu

    Edit : le message était en double , j'ai du en supprimer un
    Where is my mind

  11. #11
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 261
    Points : 64
    Points
    64
    Par défaut
    merci je vais regarder ca de plus pres
    ne t'inquiéte pas pour moi je me casse la tete ca je peut te l'assurer, je me la casse a un telle point que jy comprend plus rien a force lol

Discussions similaires

  1. jtable et base de données?
    Par 7rouz dans le forum Composants
    Réponses: 2
    Dernier message: 27/07/2009, 09h41
  2. Remplir jtable a partir d'une base de donnée mysql
    Par chris81 dans le forum Composants
    Réponses: 3
    Dernier message: 26/04/2007, 14h09
  3. Mise à jour de JTable depuis une Base de Données.
    Par hmd01 dans le forum Composants
    Réponses: 3
    Dernier message: 13/03/2007, 16h51
  4. jtable et base de donnée acess
    Par lilmo dans le forum Composants
    Réponses: 8
    Dernier message: 23/12/2006, 00h15
  5. Jtable pb ouverture d'un pdf dans une base de donnée
    Par fredo1314 dans le forum Composants
    Réponses: 11
    Dernier message: 11/07/2006, 19h15

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