rs=stmt.executeQuery("select count(*) from feedsca group by score order by score"); while(rs.next()){ pw.printf(rowFormat, rs.getLong(1),"0",rs.getLong(2),rs.getLong(3));}
4 Réponses :
Vous devez déplacer le curseur du résultat défini sur une ligne - soit par Lorsque vous souhaitez itérer le P> P> Resulatset.First () Code> ou par
Resultset.Next () Code>. Initialement, le curseur pointe avant la première rangée, d'où votre exception.
while(rs.next()) {
...
}
Merci Bozho! Veuillez me mettre à jour sur ma récente exception également. Voir ma question mise à jour
@LGAP: votre requête est SELECT Count (*) ... code>, qui ne renvoie qu'une valeur. Par conséquent, le seul index valide est 1, c'est pourquoi il se plaint que l'indice 2 est hors de portée.
@LGAP: Comment savez-vous combien de lignes seront retournées? Ce n'est pas une bonne idée de coder de manière difficile le nombre de paramètres à printf code>.
@Bozho .. ma requête retourne en fait trois rangées dans une colonne. J'ai besoin de ces trois valeurs à récupérer. Ce qui peut être fait?
Simplement supprimer Rs.getlong (2) et 3. et vérifier ma mise à jour - ces numéros sont destinés aux colonnes et non pour les lignes. Les lignes sont itératées par rs.next () code>
@LGAP: Voir ma réponse mise à jour pour un moyen de le faire, même si je ne le recommanderais pas.
Vous devez utiliser l'une des méthodes pour déplacer le curseur code> le curseur sur une ligne avant d'utiliser les méthodes ou pour une requête qui renvoie plusieurs rangées: p> getxxx code>. i.e.
rs.next () code>,
rs.first () code> ou
rs.last () code>. Ces méthodes renvoient
true code> si une ligne valide a été localisée de sorte qu'un motif typique est
while (rs.next()) {
int field1 = rs.getInt(1);
// other columns
}
Vous devez appeler Typiquement, vous allez itéralement sur le résultat défini comme celui-ci: P> rs.next () code> Avant d'accéder à la première ligne.
long l1, l2, l3;
rs.next();
l1 = rs.getLong(1);
rs.next();
l2 = rs.getLong(1);
rs.next();
l3 = rs.getLong(1);
pw.printf(rowFormat, l1,"0",l2,l3);
Merci Casablanca! Dans ce cas, je suis sûr que la requête ne renvoie que trois rangées. Je vais aller pour une autre méthode pour toute autre requête avec le scénario similaire.
En ce qui concerne mes connaissances, votre requête obtiendra une rangée et une colonne, c'est-à-dire le nombre total de lignes que votre requête revient.
Dites par exemple: p>
Sélectionnez Compte (*) de EMP; Généralement, cette requête retournera une valeur 14. p>
de sorte que votre code Java p> ne renvoie qu'une seule valeur, 14 p> Alors, comment pouvez-vous accéder à Rs.GetString (2). Cela jette automatiquement une exception que vous avez dans le second cas. P> p>