Rechercher : dans
Par :

Remplir une JTable a partir d'une BDD

Dernière réponse le 22 avr 2008 à 16:04:09 rock in the air, le 21 avr 2008 à 16:38:54 
 Signaler ce message aux modérateurs

Bonjour,

J'ai une base de donnée et j'essaie de faire une procédure qui récupère le resultat d'une requête et l'affiche dans une Jtable.
-Langage de prog: java.
-IDE: eclipse 3.0.2.
-BDD: oracle 10g.

Mais j'ai un souci je n'arrive pas car il y a un conflit de type, j'arrive pas a transtyper un type int en Object.
La ligne en question est indiquée ci dessous dans le code de ma procédure.

//fonction qui va afficher le tableau
public void afficherTableau()
{
//on fait disparaitre les boutons inutiles
btnExporter.setVisible(false);
btnImprimer.setVisible(false);

pnlPreview.removeAll();
pnlPreview.repaint();
pnlPreview.validate();

DefaultTableModel modell = new DefaultTableModel();
JTable table = new JTable(modell);
//les colonnes ou on va mettre les données
Object tab1[] = {""};
Object tab2[] = {""};
Object tab3[] = {""};
//Chacune des colonnes de la JTable...
tab1 = new Object[31];
tab2 = new Object[31];
tab3 = new Object[31];
//Ajout des colonnes précédemment déclarées
modell.addColumn("No Prog", tab1);
modell.addColumn("Date", tab2);
modell.addColumn("Nb Blocs/pg", tab3);
//table.setAlignmentX(2);
//table.setAlignmentY(3);
modell.addColumn("No Prog", tab1);
modell.addColumn("Date", tab2);
modell.addColumn("Nb Blocs/pg",tab3);
//on force la taille du tableau
table.getColumnModel().getColumn(0).setPreferredWidth(100);
table.getColumnModel().getColumn(1).setPreferredWidth(100);

//ajout de la table dans le form
JScrollPane JSP = new JScrollPane(table);
//System.out.println("la hauteur est de:"+JSP.getHeight()+" la largeur ="+JSP.getWidth());
JSP.setSize(pnlPreview.getSize());
JSP.setPreferredSize(new Dimension(pnlContenuPreview.getSize().width, pnlContenuPreview.getSize().height-10));
JSP.setLocation(2,40);

//System.out.println("x:"+JSP.getX()+"y"+JSP.getY());

//JScrollPane myScrollPane = new JScrollPane(table);
JSP.setVisible(true);
PreparedStatement PS=null;
ResultSet RS=null;
final String QUERY_INDIC_TPS_SEJOUR_CSO=
"SELECT PROGRAMME.NUM_PROG,"+
"TO_CHAR(MIN(COMMANDE.PREM_ENF),'DD/MM/YYYY'), "+
"SUM (COMMANDE.QBL)"+
"FROM PROGRAMME, COMMANDE"+
"WHERE ( (PROGRAMME.NUM_PROG = COMMANDE.NUM_PROG)"+
"AND (PROGRAMME.NUM_CONT= ?)"+
"AND (TO_CHAR((COMMANDE.PREM_ENF), 'YYYY')= ?))"+
"GROUP BY PROGRAMME.NUM_PROG";
int conteneur=0;
int annee=0;


try{

//on récupère les variables passés en paramètre
PS=getConnection().prepareStatement(QUERY_INDIC_TPS_SEJOUR_CSO);
PS.setInt(1, conteneur);
PS.setString(2, new Integer(annee).toString());

RS=PS.executeQuery();
while (RS.next()){

//on stocke le résultat de la requête dans des variables
int num_prog=RS.getInt(1);
java.sql.Timestamp Date_enf=RS.getTimestamp(2);
int Nb_Bloc=RS.getInt(3);
//===>Comment ajouter les données dans la table sachant qu'il y a un problème de transtypage de int en Object??!!!

}
}
catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Erreur : "+e);
System.err.println("Erreur lors de l'execution d'un traitement SQL!");
e.printStackTrace();
}
finally
{
close(PS, RS);
}


this.add(JSP);
}

MERCI de m'aider, c'est urgent!!!

Miriam.

Configuration: Windows XP
Firefox 2.0.0.3

Meilleures réponses pour « Remplir une JTable a partir d'une BDD » dans :
Partitionner un disque dur Voir1 - Intérêt et avertissement 1.1 - Intérêt 1.2 - Avertissements préalables 2 - Partitions et systèmes de fichiers 2.1 - Partitions 2.2 - Systèmes de fichiers 3 - Quels logiciels ? 3.1 - Solutions gratuites 3.1.1 - FDISK de Windows 3.1.2...
[MSN] Utiliser MSN sans l'installer - à partir d'un site VoirIl est possible d'utiliser un client MSN pour discuter avec ses amis sans avoir à l'installer. Il existe quelques clients conçus pour être utilisés à partir d'un navigateur sous forme de pages Internet. Évidemment, leurs fonctionnalités sont...
Equivalent de Partition Magic (gratuit) VoirIl existe aujourd'hui plusieurs logiciels gratuits/libres pour partitionner qui équivalent le logiciel payant Partition Magic et constituent une excellente alternative. Voici une sélection des meilleurs logiciels de partitionnement gratuits ou...
Télécharger EASEUS Partition Master VoirEaseUs Partition Manager Free, est le logiciel par excellence à avoir sur son système. EaseUs Partition Manager partitionne facilement et sans erreur vos disques durs à la taille que vous avez choisie. Principales caractéristiques de EASEUS...
Manipulation de données - Recherche et remplacement VoirRecherche et remplacement Les algorithmes de remplacement permettent de remplacer tous les éléments d’un conteneur vérifiant une propriété particulière par un autre élément dont la valeur doit être fournie en argument. Les éléments devant être...
Partition - Partitionnement d'un disque dur VoirQu'est-ce qu'une partition? Le partitionnement d'un disque dur se fait après le formatage physique de celui-ci et avant le formatage logique. Il consiste à créer des zones sur le disque dont les données ne seront pas mélangées. Cela sert par...
Partage de fichiers sous Windows XP VoirIntérêt Le partage de fichiers consiste à rendre disponible à travers le réseau le contenu d'un ou plusieurs répertoires. Tous les systèmes Windows possèdent en standard des mécanismes permettant de mettre facilement en partage le...

1

=[Cvrd]=Tassin, le 21 avr 2008 à 16:56:06

Utilise la méthode addRow sur ton modèle :

Object[] temp = {new Integer(Nb_Bloc), ...};modell.addRow(temp);
Et après ta boucle tu ajoutes :
table.setModel(modell);
Je pense que ça devrait le faire ;-) -- Alex pour vous servir --

-- N'oubliez pas de mettre vos sujets en "Résolu" lorsque vous avez la réponse ;-) --

Répondre à =[Cvrd]=Tassin

2

rock in the air, le 22 avr 2008 à 08:39:25

Ca ne marche toujours pas!!!

Répondre à rock in the air

3

=[Cvrd]=Tassin, le 22 avr 2008 à 11:15:54

Développe un peu plus au lieu de dire "Ca marche pas". Explique nous où est le problème (Message d'erreur, non affichage de la table, etc.) -- Alex pour vous servir --

-- N'oubliez pas de mettre vos sujets en "Résolu" lorsque vous avez la réponse ;-) --

Répondre à =[Cvrd]=Tassin

4

 rock in the air, le 22 avr 2008 à 16:04:09
  • +1

C'est bon ca marche :

J'ai remplacé le type objet:

Object tab1[] = {""};
Object tab2[] = {""};
Object tab3[] = {""};
//Chacune des colonnes de la JTable...
tab1 = new Object[31];
tab2 = new Object[31];
tab3 = new Object[31];

par des listes:

List liste1 = new ArrayList();
List liste2 = new ArrayList();
List liste3 = new ArrayList();
List liste4 = new ArrayList();

Puis j'ai stocké le résultat de ma requete dans :

//les colonnes ou on va mettre les données
Integer temp1 = new Integer(num_prog % 1000);
String temp2 = Date_enf;
Integer temp3 = new Integer(Nb_Bloc);
Integer temp4= new Integer(Cumul);

Puis dans une boucle je les ajoute dans mes listes déclarées précédemment:

//on ajoute les lignes récupérées dans la liste
liste1.add(temp1);
liste2.add(temp2);
liste3.add(temp3);
liste4.add(temp4);


Et finalement j'ajoute dans mes colonnes:

//Ajout des colonnes précédemment déclarées
modell.addColumn("No Prog", liste1.toArray());
modell.addColumn("Date", liste2.toArray());
modell.addColumn("Nb Blocs/pg", liste3.toArray());
modell.addColumn("Nb Blocs/Cumul", liste4.toArray());


Voilà!!

Répondre à rock in the air