【发布时间】:2016-10-05 14:56:17
【问题描述】:
我有一个出勤表,其中列是 id、name、date、status。我的问题是,如果我在我的 html 页面中选择两个日期(开始日期和结束日期),我想生成一个出勤在日期范围内报告学生的姓名也没有现在。如何编写查询以选择学生的姓名和特定学生的当前天数。提前感谢所有帮助。
我写了如下查询。
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());
}
【问题讨论】:
-
您的查询有什么问题?
-
我没有从我的桌子上得到正确的状态计数。
-
请添加示例数据
-
您想要结果集中的列数还是结果集中的行数? ResultSetMetaData.getColumnCount() 将始终为 1,因为 student_name 是 select 语句中的唯一列。