Mysql 如何在jdbc中编写列计数查询

Mysql 如何在jdbc中编写列计数查询,mysql,jdbc,Mysql,Jdbc,我有一个考勤表,其中的列是id、姓名、日期和状态。这里我的问题是,如果我在html页面中选择两个日期(开始日期和结束日期),我想在日期范围内生成一个学生的出勤报告,其姓名和当前日期也不相同。如何编写查询以选择学生姓名和计算特定学生的当前日期。对于所有帮助,请提前感谢 我写的查询如下 String sql = "select student_name,count(status) from attendance where attendance.date>=? and attendance.d

我有一个考勤表,其中的列是id、姓名、日期和状态。这里我的问题是,如果我在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());
    }
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的日期。