Remplir une JTable avec une BDD - Java - Programmation
Marsh Posté le 09-02-2005 à 14:21:47
c'est bien mieux de tout remplir d'un coup ... sinon ca entraine bcp trop de requêtes ...
Marsh Posté le 09-02-2005 à 15:12:11
C bien ce que je me disais donc il faut que je charge les données dont j'ai besoin dans mon modèle lors de la création de la vue ?
Et ensuite j'essaye de faire des refresh dessus toutes les x secondes ou minutes ?
Marsh Posté le 09-02-2005 à 15:41:48
ReplyMarsh Posté le 25-01-2008 à 18:22:14
Un DAO ? ... Et vous parlez d'un chargement de JTable, suite à des requêtes... Ne serait-ce pas plutôt un DTO, le mot que tu cherchais ? Si, oui, alors je t'explique. Si non (Ou "sinon", mais on ne va pas pinailler...), et bien, lit quand même : je pense que cela pourrait t'être utile pour ce que tu souhaites faire.
Alors, un DTO est une classe dans laquelle tu vas "stocker" des variables correspondant aux champs des tables sur lesquelles tu requêtes. (Par exemple: Une table "eleve", tu veux le "NomElev". Donc, dans ton "DTO", tu vas stocker une variable genre "nomEleve". Tu n'oublies pas le respect de l'encapsulation "objet" : c'est à dire des "getters" et des "setters" dans le DTO, correspondants à chacune des variables.)
Bien. Ensuite, dans une autre classe, tu créés une liste du type de ton DTO (" list <typeDTO> nomListe = new ArrayList<typeDTO>();" ). Ensuite, avec une boucle while, après avoir créé une variable du type de ton DTO, tu parcoures ton resulset (Qui a auparavant stocké le résultat de la requête), et tu stockes dans des variables String chaque valeurs de champs (Faire attention au typage des champs de la BDD et de ceux de Java...).
Puis (Pffiou, c'est long, hein ? ... ), tu attribus (Grâce aux "setters"... Ah! Ah! Je savais qu'on s'en servirais un jour !!! ) les valeurs des String à ta variable de type DTO. (Genre: res.getString ("nomChampDansLaBase" )
Finalement, tu ajoutes cette dernière variable à la liste (Créant ainsi une ligne dans celle-ci, contenant les champs répondant à ta requête...).
Après, dans la classe de ta JTable, tu charge celle-ci avec la liste. (Une boucle "for", contenant un object chargé par la liste (Par exemple : "nomListe.get(i).getNomVarDTO" ). Puis " nomModele.add (nomObject)".
Bon, voilà, c'est juste un petit plan. (Mes doigts sont fatigués... Ils vont se reposer.)
En très très résumé: Un DTO sert à stocker le résultat d'une requête.
(benou... benou... C'est pas le "phénix" egyptien ?)
Marsh Posté le 09-02-2005 à 11:39:17
Je vous explique mon problème :
Je dois remplir une JTable avec des données présentes dans une base de données.
Donc j'ai compris comment me connecter à la base de données (JDBC !) et j'ai déjà utilisé des JTables avec des modèles utilisant des données locales.
Comment faire pour que mon modèle aille chercher les données dans la base de donnée ?
Vaut il mieux charger le contenu nécessaire de la base en mémoire puis remplir la JTable au fur et à mesure ou alors faut il aller chercher les données dans la base à chaque getElementAt(int row, int col) du modèle ?
On m'a aussi parler d'un DAO qui ferait l'interface entre la base de données et le modèle. C'est quoi cetteb bête la ?
Merci d'avance