2010-11-12 3 views
0

J'utilise Embedded SQL avec Java. J'ai une table simple où je veux retourner une moyenne de la colonne qui contient des températures. J'ai essayé d'utiliser ResultSet mais il n'a pas réussi, je pense que cela peut être parce que la moyenne renvoie juste une seule donnée et non un ensemble. J'ai essayé de google et regarder la documentation du site soleil, mais pas de chance. Même mon professeur ne se rappelait pas comment le faire:)Java/Sql: renvoie une moyenne d'un problème de colonne spécifique

ResultSet aveTemp = stat.executeQuery("SELECT AVG(T_TEMP) FROM TrailTracker"); 
System.out.println("avg temp is " + aveTemp); 

Il produit: température avg est [email protected]

Je sais assez bien sql, mais intégré avec Java est nouveau pour moi. S'il vous plaît aider.

Merci à l'avance

+0

'Même mon professeur ne pouvait pas se souvenir comment le faire''. Je dirais WOW !!! –

+0

Haha Je sais ... C'est bon J'aime apprendre par moi-même Je comprends mieux. Merci. – tasha

Répondre

3
ResultSet rs = stmt.executeQuery("select avg(T_TEMP) from TRAILTRACKER"); 
if(rs.next()) 
    System.out.println("avg temp is " + rs.getFloat(1)); 

Rappelez-vous l'index commence par 1 pour ResultSet. Et vous devez appeler next() avant d'essayer d'obtenir une valeur. Et oui, ResultSet est null-sûr, signifie qu'il ne sera pas null.

1

Essayez ceci:

ResultSet aveTemp = stat.executeQuery("SELECT AVG(T_TEMP) FROM TrailTracker"); 
if (aveTemp.next()) { 
    System.out.println("avg temp is " + aveTemp.getFloat(1)); 
} 

Il obtient la valeur flottante de la première colonne du jeu de résultats. Vous ne pouvez pas simplement afficher le jeu de résultats car cela appellera la méthode toString, qui retournera le nom de la classe suivi de @ suivi de la représentation hexadécimale du hashCode.

Si vous avez besoin de formater le flottant à un certain nombre de décimales, pensez à utiliser un Formatter.

+0

Je viens de l'essayer ... J'obtiens une exception: Avant le début du jeu de résultats. – tasha

+0

Vous devez d'abord 'getNext()'. 'if (aveTemp.getNext()) System.out.println (" température moyenne est "+ aveTemp.getFloat (0)); ' –

+0

Il n'y a pas d'option pop-up pour getNext() lorsque vous appuyez sur le point. – tasha

Questions connexes