Mysql 如何在jdbc中编写列计数查询
我有一个考勤表,其中的列是id、姓名、日期和状态。这里我的问题是,如果我在html页面中选择两个日期(开始日期和结束日期),我想在日期范围内生成一个学生的出勤报告,其姓名和当前日期也不相同。如何编写查询以选择学生姓名和计算特定学生的当前日期。对于所有帮助,请提前感谢 我写的查询如下Mysql 如何在jdbc中编写列计数查询,mysql,jdbc,Mysql,Jdbc,我有一个考勤表,其中的列是id、姓名、日期和状态。这里我的问题是,如果我在html页面中选择两个日期(开始日期和结束日期),我想在日期范围内生成一个学生的出勤报告,其姓名和当前日期也不相同。如何编写查询以选择学生姓名和计算特定学生的当前日期。对于所有帮助,请提前感谢 我写的查询如下 String sql = "select student_name,count(status) from attendance where attendance.date>=? and attendance.d
String sql = "select student_name,count(status) from attendance where attendance.date>=? and attendance.date<=? and attendance.status=?";
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test_schema", "root", "root");
String sql = "select student_name from attendance where attendance.date>=? and attendance.date<=? and attendance.status=?";
PreparedStatement pstmt = con.prepareStatement(sql);
//pstmt.setString(1, "Present");
pstmt.setString(1, stDate);
pstmt.setString(2, enDate);
pstmt.setString(3, "Present");
rs = pstmt.executeQuery();
while (rs.next()) {
java.sql.ResultSetMetaData rsmd=rs.getMetaData();
int colCount = rsmd.getColumnCount();
System.out.println("colCount :" + colCount);
System.out.println("count>>"+colCount);
StudentMark ge = new StudentMark();
ge.setStudentName(rs.getString(1));
stList.add(ge);
}
out.print(stList);
out.close();
} catch (Exception e) {
System.err.println(e.getMessage());
}
String sql=“从Attention.date>=?和Attention.date=?和Attention.date>中选择学生姓名、计数(状态)”+colCount);
StudentMark ge=新StudentMark();
ge.setStudentName(rs.getString(1));
stList.add(通用电气);
}
打印输出(stList);
out.close();
}捕获(例外e){
System.err.println(e.getMessage());
}
您可以使用ResultSetMetaData
获取任何select
查询结果的列计数
ResultSet rs= ... //Statement's result.
ResultSetMetaData rsmd= rs.getMetaData();
int colCount = rsmd.getColumnCount();
您的查询有什么问题?我没有从表中获得正确的状态计数。请添加示例数据您想要结果集中的列数还是结果集中的行数?ResultSetMetaData.getColumnCount()将始终为1,因为student_name是select语句中的唯一列。从上面的代码中,我得到的colCount num仅为1,但我有两个状态为present的日期。