java - 如何创建一个饼图来显示每个人注册的东西的数量?

标签 java mysql jfreechart

在我的项目中,我想在饼图中显示每个员工在系统中注册了多少个机构。 institutions 表包含一个外键,其中包含注册该机构的员工的 ID,因此每个机构都有一个与之关联的员工。

我构建了以下代码,但无法更进一步:

//etc

    String query = "SELECT i.ins_id, f.fun_nome FROM instituicao i " +
                "JOIN funcionario f " +
                "ON(f.fun_id = i.ins_fun_id)";

        PreparedStatement stmt = ConexaoDAO.con.prepareStatement(query,
                ResultSet.TYPE_SCROLL_INSENSITIVE,
                ResultSet.CONCUR_READ_ONLY);

    ResultSet rs = stmt.executeQuery();

    while(rs.next()) {
        total = rs.getInt(1);
    }

    DefaultPieDataset pieDataset = new DefaultPieDataset();

    for(VFuncionarioVO vo : lista) {
        //pieDataset.setValue(vo.getNome(), );
    }

//etc

我尝试在查询中使用 GROUP BY,但这并没有解决问题。

编辑:实际上,这项工作需要使用 GROUP BY 语句。请阅读已接受的答案及其评论。

最佳答案

您不需要PreparedStatement。使用 org.jfree.data.jdbc.JDBCPieDataset接受查询“返回两列数据的构造函数,第一列包含 VARCHAR 数据,第二列包含数字数据。”您可以在 ChartFactory 中使用数据集。

JDBCPieDataset ds = new JDBCPieDataset(conn, "SELECT ...");

显示了一个完整的例子here .

关于java - 如何创建一个饼图来显示每个人注册的东西的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16704595/

相关文章:

JFreeChart 使用大数字作为值

java - JFree图表将轴设置为百分比

java - 像使用 C++ 迭代器一样使用 java 迭代器

mysql - 无法在mysql中创建触发器

mysql - 如何获取mysql中两个表中列之间的匹配计数

SQL 将表 B 中的两个或多个与表 A 中的公共(public)数据连接起来

java - MultiAxisChart 在 Jasper 报告中,两个轴都位于左侧

java - 获取最新版本的 java api 文档

java - Apache HttpClient 连接配置

java - 我的问题是关于java中的正则表达式