Probleme d affichage d un resulset dans jtable

benohite Messages postés 210 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 18 décembre 2003 - 27 mai 2003 à 12:05
benohite Messages postés 210 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 18 décembre 2003 - 27 mai 2003 à 16:22
bonjour,
voila j essaye d afficher le resultat d une requete sql dans une jtable
je recupere un objet resultset que je passe en parametre a mon TableModel (via la methode updateModel) pour ensuite construire la jtable a partir de ce model
mon soucis est que ma table ne contient en realite qu une ligne de la base mais repetée autant de fois qu il y a de lignes dans la base
j ai eu beau triturer mon table model dans tous les sens je ne parviens pas a afficher correctement la base
j espere que vous pourrez m aider

voici le code de mon tablemodel enfin juste la methode qui doit initialiser le tableau d objet et les vecteurs de la table car c est ici qu est le probleme enfin il me semble


public void updateModel(ResultSet rs) throws SQLException 
{
      // récpération de l'information sur les données 
      metaData = rs.getMetaData();
      columnCount = metaData.getColumnCount();
    
      // allocation des tableaux pour stocker les noms des colonnes
      // et le type (classes) des colonnes
      columnNames = new String[columnCount];
      String[] columnClass = new String[columnCount];
       
      for (int i = 1; i <= columnCount;  i++) 
     {
       String recup =  metaData.getColumnLabel(i);	       
       String recupere =  metaData.getColumnTypeNam(i);       
       System.out.println("colonne:"+recup+"de type:"+recupere);
       
        columnNames[i-1] = recup;
        columnClass[i-1] = recupere;
  
       }
// chargement des données dans la liste rowValues
// initialisation de la liste des lignes avec une liste vide

rowValues = new Vector();
    
try{
System.out.println("debut:"+rs.absolute(1));
// récuperation de chacune des lignes du ResultSet 
//création d'un tableau d'objets pour récupérer les données d'une ligne

Object[] values = new Object[columnCount];

while (rs.next()) 
{
      
// recopie des valeurs de la ligne dans le tableau
 
for(int i = 1; i <= columnCount; i++)
{
Object obj = rs.getObject(i);
if(obj!=null)
{
                 values[i-1]= obj;
}
if(obj == null){System.out.println("objet vide");}
}
// ajout du tableau à la liste des lignes

rowValues.add(values);
     
}
}catch(SQLException evt){System.err.println("pb avec le tableau"+evt);}

// signale au Listener de ce TableModel qu'une nouvelle table a
// été constituée

fireTableDataChanged(); 
 }


benohite
:big)

4 réponses

cs_Duss Messages postés 890 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 29 juillet 2004 11
27 mai 2003 à 13:53
salut,
regardes cette source ca t aidera surement
Duss
0
benohite Messages postés 210 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 18 décembre 2003 7
27 mai 2003 à 15:47
en effet tu as raison ca m a bien aidé
juste un petite chose sans grande importance
tu fais appelles a une methode recordCount(resultset)
qui est sensé renvoyer le nombre de ligne d un resulset
mais cette methode n est pas implementé dans ta classe
comme je l ai ecrite voila je te propose le code afin que tu puisse le rajouter a ton source si ca te convient
//methode qui renvoit le nombre de ligne d un resultset
public int recordCount(ResultSet res)
{
    	boolean test = false;
    	int cpt = 0;
    	try
    	{
    	test = res.first();
    	while(test)
    		{
cpt++;
test = res.next();
}
return cpt;
    
                }catch(SQLException e){System.out.println("SQL exception:"+e);}
}


en de bon entendeur salut et merci

benohite
:big)
0
cs_Duss Messages postés 890 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 29 juillet 2004 11
27 mai 2003 à 16:18
salut,
en fait elle est implémentée dans mon dbmanager ;)
Duss
0
benohite Messages postés 210 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 18 décembre 2003 7
27 mai 2003 à 16:22
ok alors autant pour moi

benohite
:big)
0
Rejoignez-nous