Un truc tout simple je pense...

Un truc tout simple je pense... - Java - Programmation

Marsh Posté le 13-10-2002 à 15:29:14    

Voilà.
 
Je fais une requete pour récupérer des champs.
      Connection con;
      Statement stmt;
      stmt = con.createStatement();
      ResultSet rs = stmt.executeQuery(queryString);
 
Et je voudrais savoir le nombre de lignes qui est récupéré.
Comment faire? y a t-il une fonction pour çà??
 
Merci A++

Reply

Marsh Posté le 13-10-2002 à 15:29:14   

Reply

Marsh Posté le 13-10-2002 à 16:03:52    

A priori, non!
 

Reply

Marsh Posté le 13-10-2002 à 18:59:55    

Peut-être ResultSetMetaData mais je pense pas. Le truc c'est de parcourir ton ResultSet avec un while(rs.next()), et de compter....


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 15-10-2002 à 08:55:32    

et c'est bourrin oui on sait :)
 
sérieusement c'est un problème super classique. Tout le monde pense que c'est super simple mais en fait non. Un exemple qui montre que ca ne peut pas etre aussi simple c'est lorsque tu fais une grosse requete sur ta base (genre select * from matable ou il y a 10.000 records :D)
 
clairement l'implémentation sous jacente et la base elle même ne vas te renvoyer qu'un nombre limité de record (50 par exemple) puis au fur et à muesure que tu fais rs.next() il va aller chercher la suite du résultat
 
-> impossible de connaitre la taille à priori


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 15-10-2002 à 09:06:37    

joujou_cs a écrit a écrit :

Voilà.
 
Je fais une requete pour récupérer des champs.
      Connection con;
      Statement stmt;
      stmt = con.createStatement();
      ResultSet rs = stmt.executeQuery(queryString);
 
Et je voudrais savoir le nombre de lignes qui est récupéré.
Comment faire? y a t-il une fonction pour çà??
 
Merci A++




 
Tu peux gérer ça au niveau SQL par contre. Avant de faire ta requête, tu fais la même requête, sauf qu'à la place de la désignation des champs à récupérer, tu mets un count (*)
Niveau perfs je sais pas trop ce que ça donne, ms ça doit pas être si mauvais que ça !

Reply

Marsh Posté le 15-10-2002 à 09:44:28    

Methode alternative une peu moins bourrine :
 
rs.last();
rs.getRow()
 
....et rs.first() pour revenir au début


---------------
Eos 20d(kit) + 70-200 F4L + 50 F1.4 + 420 EX Powered®
Reply

Marsh Posté le 15-10-2002 à 09:46:54    

Meliok a écrit a écrit :

Methode alternative une peu moins bourrine :
 
rs.last();
rs.getRow()
 
....et rs.first() pour revenir au début




tiens, tu me fais penser qu'il faudrait que j'aille au boulot ... ;)

Reply

Marsh Posté le 15-10-2002 à 09:49:57    

Meliok a écrit a écrit :

Methode alternative une peu moins bourrine :
 
rs.last();
rs.getRow()
 
....et rs.first() pour revenir au début




 
euh oui sauf que si ton driver est mal implémenté et que ta query a 10.000 résultats tu vas le sentir passé au niveau perf!


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 15-10-2002 à 09:51:41    

DarkLord a écrit a écrit :

 
 
euh oui sauf que si ton driver est mal implémenté et que ta query a 10.000 résultats tu vas le sentir passé au niveau perf!




 
oui, çà c'est clair, enfin, pas plus que si tu les parcoures tous un à un ;)


---------------
Eos 20d(kit) + 70-200 F4L + 50 F1.4 + 420 EX Powered®
Reply

Marsh Posté le 15-10-2002 à 09:56:54    

Meliok a écrit a écrit :

 
 
oui, çà c'est clair, enfin, pas plus que si tu les parcoures tous un à un ;)




 
bin si justement ... La différence c'est que si tu les parcours un à un pour les stocker quelque part ou autre bin c'est "progressif" tandis que la tu parcours 10.000 enregistrement juste pour savoir qu'il y en a 10.000 (et donc après tu vas recommencer à tout reparcourir). C'est légèrement différent ;)


---------------
Just because you feel good does not make you right
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed