Un truc tout simple je pense... - Java - Programmation
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....
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 )
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
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 !
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
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 ...
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!
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
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
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++