如何在jdbc中编写查询列数

时间:2016-06-06 05:17:42

标签: mysql jdbc

我有一个表出席,其中列是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());
    }

1 个答案:

答案 0 :(得分:1)

您可以使用ResultSetMetaData获取任何select查询结果的列数。

ResultSet rs= ... //Statement's result.
ResultSetMetaData rsmd= rs.getMetaData();

int colCount =  rsmd.getColumnCount();