benohite
Messages postés210Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention18 décembre 2003
-
27 mai 2003 à 12:05
benohite
Messages postés210Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention18 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
Messages postés210Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention18 décembre 20037 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);}
}