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 :

[JTable] Récupérer le résultat d'une requête SQL


Sujet :

Composants Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 4
    Points : 6
    Points
    6
    Par défaut [JTable] Récupérer le résultat d'une requête SQL
    BONJOUR
    comment mettre le resultat d'une requete sql dans un jtable san passé par le tablemodel ?
    merci !

  2. #2
    Membre confirmé
    Avatar de DBProg
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 579
    Points
    579
    Par défaut
    Je ne crois pas que cela soit possible. Les JTable ce n'est que le composant graphique, après pour ajouter des données il y a un model qui est implicitement géré dérrière.

    Si tu ne veux pas te casser la tête tu peux toutefois utiliser le model DefaultTableModel si tu n'as pas besoin de fonctions particulières sur ton model. Tu peux utiliser la méthode addRow qui te permet d'ajouter des lignes.

    http://java.sun.com/j2se/1.5.0/docs/...ableModel.html
    La vitesse de la lumière étant supérieure à la vitesse du son, certaines personnes brillent encore tant qu'elles n'ont pas parlé
    -----------------------------------------------------------
    Retrouvez mes articles informatique sur mon Site Developpez.
    Le reste, sur le Site perso !


  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    L'utilisation des modèles n'est pas compliqué. Il est assez simple d'étendre AbstractTableModel. Exemple :
    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
    monModel extends AbstractTableModel {
     
    // Considérons que le résultats de ta requête soit dans un tableau double entrées :
     
         String [][] resRequete = new String [0][0];
     
         public int getRowCount() {return resRequete.length;}
     
         public int getColumnCount() {return resRequet[0].length;}
     
         public void getValueAt (int row, int col) { return (String) resRequete[row][col];}
     
         // Pour mettre à jour les résultats de tes requêtes :
         public setResultatRequete (String[][] resultat) {resRequete = resultat;}
    }
    Tu peux même envisager un constructeur qui prend ton tableau résultat en entrée, et changer le model de ta JTable pour chaque nouvelle requête :
    maJTable.setModel(new monModel(tableauResultat));

    A toi de vérifier qu'un raffraîchissement de l'affichage soit bien effectué après mise à jour.

  4. #4
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Citation Envoyé par marchand de sable
    Tu peux même envisager un constructeur qui prend ton tableau résultat en entrée, et changer le model de ta JTable pour chaque nouvelle requête :
    maJTable.setModel(new monModel(tableauResultat));
    Mauvaise pratique...
    Ce qu'il faut faire c'est changer le modèle de la JTable puis appeler la méthode fireTableDataChanged().
    N.B: Je suppose que ton modèle étend DefaultTableModel

    Si tu ne comprends toujours pas, n'hésite pas à revenir poser des questions (après avoir bien chercher avant )


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    Citation Envoyé par afrikha
    Mauvaise pratique...
    Je m'en doutais un peu...
    J'ai du l'utiliser 1 ou 2 fois à causes de problèmes de raffraîchissement que j'arrivais pas à résoudre...
    N.B: Je suppose que ton modèle étend DefaultTableModel
    Si la question est pour moi, ben non, en général j'étends bien AbstractTableModel... Pourquoi ? C'est aussi une mauvaise pratique ???

  6. #6
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Citation Envoyé par marchand_de_sable
    AbstractTableModel... Pourquoi ? C'est aussi une mauvaise pratique ???
    Non, ça marche aussi pour AbstractTableModel.


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    ouf

    N'oulie pas de nous dire si tu t'en sors Malik

  8. #8
    Membre confirmé
    Avatar de DBProg
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 579
    Points
    579
    Par défaut
    Citation Envoyé par afrikha
    Mauvaise pratique...
    Ce qu'il faut faire c'est changer le modèle de la JTable puis appeler la méthode fireTableDataChanged().
    N.B: Je suppose que ton modèle étend DefaultTableModel
    J'ai une petite question là dessus moi. Je ne comprends pas la mauvaise pratique ici. Pour changer le modèle il faut bien faire un setModel non ?

    Pourrais tu me donner un exemple de code correct stp ?
    Je te remercie.
    La vitesse de la lumière étant supérieure à la vitesse du son, certaines personnes brillent encore tant qu'elles n'ont pas parlé
    -----------------------------------------------------------
    Retrouvez mes articles informatique sur mon Site Developpez.
    Le reste, sur le Site perso !


  9. #9
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    Citation Envoyé par dbprog
    Pour changer le modèle il faut bien faire un setModel non ?
    Dans l'exemple pris, ce n'est pas le modèle qui doit changer, mais les valeurs des données qu'il doit manipuler.

    Pour poursuivre l'exemple de modèle de toute à l'heure :
    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
    // l'initialisation de la JTable se fait comme suit :
     
    JTable maTable = new JTable(new monModel());
     
    // Méthode de mise à jour des données de la JTable,
    public void MaJJTable (String [][] resRequete) {
         // resRequete correspond aux données récupérées par la nouvelle requête,
         // passées ici en paramètre.
     
         monModel model = (monModel) maJTable.getModel();
     
         model.setResultatRequete(resRequete);
         model.fireTableDataChanged();
     
         // demander le raffraîchissement de l'affichage ???
    }
    Pour être honnête, je ne sais pas vraiment si après ça il faut appeler le repaint() de la JTable, du conteneur de plus haut niveau (JFrame Applet, etc.), ou s'il ne faut rien faire...
    Perso, après ça, je fais tourner l'appli avec ces différentes options pour voir ce qui marche

  10. #10
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    je ne sais pas vraiment si après ça il faut appeler le repaint() de la JTable
    Non, la méthode fireTableDataChanged() s'en charge : c'est ça raison d'être.


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  11. #11
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    Citation Envoyé par afrikha
    c'est sa raison d'être
    Et moi qui ne comprenait pas de quoi ils parlaient dans la chanson

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/02/2008, 12h45
  2. Récupérer le résultat d'une requête SQL (count)
    Par niano dans le forum VBA Access
    Réponses: 6
    Dernier message: 07/09/2007, 11h41
  3. Réponses: 1
    Dernier message: 25/06/2007, 16h33
  4. [SQL-VBA] récupérer le résultat d'une requète SQL dans un fichier txt
    Par djidanestribbal dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 13/02/2007, 15h25
  5. récupérer le résultat d'une requête sql dans un edit
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/07/2005, 14h07

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