【发布时间】:2025-11-22 02:10:02
【问题描述】:
我正在编写一个 JDBC 程序,我需要在其中获取特定列的总和。
当我执行sysout 时,打印的结果是正确的,但问题是,打印的行大小是时间。我的列大小为 882,结果以 time takes s 5.75 打印 882 次(5.75 是该列的总和)。
下面是我的代码。
public int getTotalFromDB() throws Exception {
Connection conn = dbConnection.getConn();
Statement stmt, stmt1 = dbConnection.getStmt();
ResultSet rs, rs1 = dbConnection.getRs();
String queryString, queryString1 = null;
dbConnection.createClassForNameForSQLServer();
String userName = "sa";
String password = "mypassword";
String url = "MYDBURL";
dbConnection.createClassForNameForSQLServer();
conn = DriverManager.getConnection(url, userName, password);
stmt = conn.createStatement();
stmt1 = conn.createStatement();
queryString = "SELECT COUNT(*) as CNT from statusTable";
queryString1 = "select sum([Time Taken(minutes)]) as timeTaken from statusTable";
rs = stmt.executeQuery(queryString);
rs.next();
DBCount = rs.getInt("CNT");
rs.close();
stmt.close();
rs1 = stmt1.executeQuery(queryString1);
rs1.next();
timeTaken = rs1.getFloat("timeTaken");
rs1.close();
stmt1.close();
System.out.println("Time taken s " + timeTaken);
return DBCount;
}
调用它的代码如下。
JSP
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<form action="GetTheCounts" method="get" id="form1">
<div class="status">
<span class="totalTime">Count is ${DAOCount}/${excelCount}</span> <span
class="efficiency"></span>
</div>
</form>
<script type="text/javascript">
document.getElementById("form1").submit();
</script>
</body>
</html>
控制器
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
GetTheCountsDAO getTheCountsDAO = new GetTheCountsDAO();
try {
int excelCount = getTheCountsDAO.getTotalFromExcel();
int DAOCount = getTheCountsDAO.getTotalFromDB();
request.setAttribute("DAOCount", DAOCount);
request.setAttribute("excelCount", excelCount);
request.getRequestDispatcher("counts.jsp").forward(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
请让我知道我哪里出错了,我怎样才能只打印一次。
谢谢
【问题讨论】:
-
您的方法正在运行多次。你能贴出调用它的代码吗?
-
您是否尝试过添加
rowcount = 1? -
882 列?你确定你不是指行吗?很可能是一个循环调用您遍历整个表或类似的方法的方法。
-
嗨@shmosel,用另一个.code更新了我的问题
-
嗨@LordAnomander,对不起,这是行数。谢谢你戳它。也用其他文件更新了我的问题。