Problème avec getColumnCount...

Takezo666 Messages postés 2 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 1 mars 2004 - 29 févr. 2004 à 13:31
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 - 1 mars 2004 à 22:48
mon problème : je souhaite afficher le résultat d'une requête mais pour une raison dont j'ignore, il ne m'affiche que les 9 premiers résultats de ma requête... l'affichage se fait dans une JList mais le problème est que la méthode getColumnCount() ne me renvoie que 9 valeurs au maximum (alors qu'il y a plus de 9 résultats dans ma base de données)...

Je n'y comprends plus rien ! help !!!

try
{
rset = stmt.executeQuery("SELECT * FROM Session WHERE (Session.Login='"+Login+"')");
rsetMeta=rset.getMetaData();
nbColonne=rsetMeta.getColumnCount();

System.out.println(nbColonne);
for(int i=1; i<=nbColonne;i++)
{
if(rset.next())
{
listeDeQcm.add(SphinXP.sortieBD(rset.getString(1)));
}
}
}
catch(SQLException e) {System.out.println(e);}

6 réponses

cs_darkstorm Messages postés 44 Date d'inscription dimanche 3 février 2002 Statut Membre Dernière intervention 22 mai 2006
29 févr. 2004 à 13:55
Salut,

Tu fais une petite erreur, tu renvoies le nombre de colonnes et pas le nombre de lignes, en effet il est impossible de savoir combien il y a d'enregistrements dans ton ResultSet du moment que c'est un pointeur qui avance et recule. la solution est d'utiliser un java.util.Vector qui est un tableau redimensionnable et tu ajoutes au fur et à mesure les lignes dedans, ensuite tu crées ta JTable et dans le constructeur tu demandes comme paramètres le Vector et le tableau de String contenant les en-têtes.

Voilà tout A+
..................................
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 11
29 févr. 2004 à 15:31
GodConan :clown)

biensur que si c possible ;o) de savoir combien de ligne tu a ds ta requete ;o) il suffi de faire une requete count(*) qui te renvoi se nombre ;o) et croi moi c 100 foi plus rapide que d utiliser un vector ;o)
ta l air malin avec vector sur une requete de 10000 reponces ou meme 50000 ;o) héhé

GL

++
0
cs_darkstorm Messages postés 44 Date d'inscription dimanche 3 février 2002 Statut Membre Dernière intervention 22 mai 2006
29 févr. 2004 à 16:49
Attention tu m'as mal compris, si tu refais une requête count(*) tu crées un autre RS qui contient comme enregistrement le nombre de résultats, mais l'objet RS n'a pas de méthodes qui te disent combien il y a d'enregistrements dans le RS.

Pour ce qui est du Vector c'est vrai j'ai mal formulé, je ne veux pas l'utiliser pour compter les résultats, pour cela tu crées une méthode qui fait une requête count comme tu dis, je croyais qu'il devait afficher ça dans une JTable alors je lui conseillais d'utiliser un Vector pour stocker les données comme ça il peut ajouter des lignes sans problèmes.

Voilà tout A+..................................
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 11
29 févr. 2004 à 18:31
GodConan :clown)

ben ;o) je pense me suis mal expliker ou pas asser ds le detail ;o) tu doi faire une requete count sur le resultat de ta 1ere requete ;o) c simple ;o) en faite et dc selon le SGBDR que tu utilise plusieur solution s offre a toi ;o)

ensuite en effet tu obtien un otre RS mai c tou bete de lire seul resulta kil contient...

qd au vector evidement avant de le metre ds la table fo en passer par la ;o) mais pour les grosse table ;o) tu pourra pas ten servir ;o) pour conter vu que tu sera obliger de bufferiser.. ;o) otrement ta table met 3 h a se remplir... ;o)

GL

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Takezo666 Messages postés 2 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 1 mars 2004
1 mars 2004 à 18:11
c'est bon j'ai trouvé une solution toute bête...

Suffit de faire un :

while(rset.next)
{ // affichage }

et ca marche nikel ! merci de m'avoir indiqué mon erreur !
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 11
1 mars 2004 à 22:48
GodConan :clown)

ben meme cette soluce est pas ideal ;o) mais sur c mieu que rien ... ;o)
le prob c que tu parcour qd meme le RS ;-(

++
0
Rejoignez-nous