【问题标题】:How to write query for count of a column in jdbc如何在jdbc中编写查询列的计数
【发布时间】: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 语句中的唯一列。

标签: mysql jdbc


【解决方案1】:

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

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

int colCount =  rsmd.getColumnCount();

【讨论】:

  • 从上面的代码我得到 colCount num 只是 1,但我有两个状态存在的日期。
猜你喜欢
  • 2013-11-08
  • 2015-04-25
  • 1970-01-01
  • 2014-03-29
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多