8
votes

Utilisation de Resulatset dans le programme Java

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));}

0 commentaires

4 Réponses :


13
votes

Vous devez déplacer le curseur du résultat défini sur une ligne - soit par Resulatset.First () Code> ou par Resultset.Next () Code>. Initialement, le curseur pointe avant la première rangée, d'où votre exception.

Lorsque vous souhaitez itérer le P> P>

while(rs.next()) {
    ...
}


6 commentaires

Merci Bozho! Veuillez me mettre à jour sur ma récente exception également. Voir ma question mise à jour


@LGAP: votre requête est SELECT Count (*) ... , 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 .


@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 ()


@LGAP: Voir ma réponse mise à jour pour un moyen de le faire, même si je ne le recommanderais pas.



2
votes

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 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 xxx pré>

ou pour une requête qui renvoie plusieurs rangées: p>

while (rs.next()) {
  int field1 = rs.getInt(1);
  // other columns
}


0 commentaires

5
votes

Vous devez appeler rs.next () code> Avant d'accéder à la première ligne.

Typiquement, vous allez itéralement sur le résultat défini comme celui-ci: P>

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);


1 commentaires

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.



0
votes

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:

Sélectionnez Compte (*) de EMP; Généralement, cette requête retournera une valeur 14.

de sorte que votre code Java xxx

ne renvoie qu'une seule valeur, 14

Alors, comment pouvez-vous accéder à Rs.GetString (2). Cela jette automatiquement une exception que vous avez dans le second cas.


0 commentaires