我有以下代码。查询在mysql中运行良好,但在与java集成时无效。请检查代码。对于所有列都没有正确计算。请帮助。谢谢。
import java.io.*;
import java.sql.*;
public class Sum11{
public static void main(String[] args) {
System.out.println("Sum of the specific column!");
Connection con = null;
int sum1=0;
int sum2=0;
int sum3=0;
try{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection ("jdbc:mysql://localhost:3306/prathi","root","mysql");
try{
Statement st = con.createStatement();
ResultSet res = st.executeQuery("SELECT Service_ID,SUM(consumer_feedback) FROM consumer1 group by Service_ID");
while (res.next()){
int data=res.getInt(1);
System.out.println(data);
int c1 = res.getInt(2);
sum1 = sum1+c1;
}
System.out.println("Sum of column " +sum1);
while (res.next()){
int data=res.getInt(1);
System.out.println(data);
int c2 = res.getInt(1);
sum2 = sum2+c2;
}
System.out.println("Sum of column " +sum2);
while (res.next()){
int data=res.getInt(1);
System.out.println(data);
int c3 = res.getInt(1);
sum3 = sum3+c3;
}
System.out.println("Sum of column " +sum3);
}// end of try inner block
catch (SQLException s){
System.out.println("SQL statement is not executed!");
}
}
catch (Exception e){
e.printStackTrace();
}
}
}
我的表格如下。
+------------+--------------+-------------------+
| Service_ID | Service_Type | consumer_feedback |
+------------+--------------+-------------------+
| 31 | Printer | 1 |
| 32 | Printer | -1 |
| 32 | Printer | -1 |
| 32 | Printer | 0 |
| 33 | Printer | 1 |
| 33 | Printer | 1 |
| 31 | Printer | -1 |
| 31 | Printer | -1 |
答案 0 :(得分:2)
您有3个while (res.next())
个循环处理同一个ResultSet
。但是,第一个while
循环将遍历所有行,最后2个while
循环将不执行任何操作(因为此时res.next()
将为false)。
如果你能解释为什么你有3个循环以及你想要做什么,我们可以告诉你代码有什么问题。
答案 1 :(得分:0)
我可能错了,但GROUP BY子句也不应该有HAVING子句吗?
答案 2 :(得分:0)
在我看来,好像你会SUM
两次进行,一次进入SQL
,一次进入Java
。
你的来源很难阅读。
为什么在while (res.next())
之间没有初始化res
三次false
?
一旦它在第一个循环中返回{{1}},对于其他循环就不会这样......
如果这还没有帮助,请重新格式化您的Java代码。