如何使用 JDBC 打印 SUM 和 AVG SQL 值?

Posted

技术标签:

【中文标题】如何使用 JDBC 打印 SUM 和 AVG SQL 值?【英文标题】:How to print SUM, and AVG SQL values with JDBC? 【发布时间】:2011-04-16 15:55:03 【问题描述】:

好的,我正在尝试使用 JDBC 打印 SUM 和 AVG 函数的结果。所以基本上,它不起作用。我做错了什么?

   <table border="1">
     <tr><th>Total Homes Sold</th><th>Total Sales Amount</th><th>Averages Price Per Home</th></tr>    

       <% rset = stmt.executeQuery("SELECT COUNT(home_ID) FROM home");%>
       <% rset1 = stmt.executeQuery("SELECT SUM(purchase_Price) FROM home");%>          
       <% rset2 = stmt.executeQuery("SELECT AVG(purchase_Price) FROM home");%>

       <tr>
         <td><%= rset.getString(1) %></td>
         <td><%= rset1.getString(1) %></td>
         <td><%= rset2.getString(1) %></td>
      </tr>

   </table>

【问题讨论】:

“不工作”是什么意思?没有值显示?错误?例外? (顺便说一句,您只需一次选择就可以完成这三个查询) 是的,我收到一条错误消息,指出:root cause javax.servlet.ServletException: java.sql.SQLException: ResultSet is closed 另外,我怎么能把它放在一个语句中? 【参考方案1】:

主要问题是你需要在结果集上调用next()(在executeQuery()之后)来检索结果集的第一行(甚至虽然只有一行)。

如果你不这样做,没有可用的行并且调用 getString() 会导致“ResultSet is closed”错误。

【讨论】:

好的,所以我合并了: 现在唯一的问题是它解析但结果是错误的。唯一的总舍是:0 而另外两个是NULL?什么。 . .有任何想法吗?当我通过命令行将语句输入到我的 SQL*Plus 数据库中时,它可以工作;为什么它不能与 JDBC 一起使用? 如果您的表没有行,则结果 0、NULL、NULL 是预期结果。您确定该表包含任何数据吗?您是否从 SQL*plus 插入数据而忘记提交?从您的网络服务器访问时,是否存在某种未正确初始化的行级安全性? 是的,看起来我们的数据库服务器出现了一些问题。 . .我会仔细看看的。感谢您的提醒! 好吧,整个 0,NULL,NULL,事情是 Oracle 服务器错误。唷,我以为我疯了——反正没有比平时多 :) 谢谢你的帮助!【参考方案2】:

尝试做:

   <tr>
   <% rset = stmt.executeQuery("SELECT COUNT(home_ID) FROM home");%>
     <td><%= rset.getString(1) %></td>
   <% rset = stmt.executeQuery("SELECT SUM(purchase_Price) FROM home");%>          
     <td><%= rset.getString(1) %></td>
   <% rset = stmt.executeQuery("SELECT AVG(purchase_Price) FROM home");%>
     <td><%= rset.getString(1) %></td>
  </tr>

或者更好:

   <tr>
   <% rset = stmt.executeQuery("SELECT COUNT(home_ID), SUM(purchase_Price), AVG(purchase_Price) FROM home");%>
     <td><%= rset.getString(1) %></td>
     <td><%= rset.getString(2) %></td>
     <td><%= rset.getString(3) %></td>
  </tr>

【讨论】:

好的,所以我合并了: 现在唯一的问题是它解析了但是结果是错误的。总舍sole为:0而其他两个为NULL?什么。 . .有任何想法吗?当我通过命令行将语句输入我的 SQL*Plus 数据库时,它可以工作;为什么它不能与 JDBC 一起使用?

以上是关于如何使用 JDBC 打印 SUM 和 AVG SQL 值?的主要内容,如果未能解决你的问题,请参考以下文章

即使字段的映射位于`text`和`keyword`类型上,也如何对sum和avg`进行聚合?

c语言编程有一个数组,内放10个学生的英语成绩,求出平均分,并且打印出高于平均分的英语成绩?

SQL GROUP_CONCAT + SUM + AVG

LINQ Group使用Lambda通过两个对象属性和SUM,AVG或忽略其他对象属性

SQL Hive - 计算前几个月的滚动 SUM、AVG

Hive分析窗口函数 SUM,AVG,MIN,MAX