Java 使用JDBCCategoryDataset的折线图中的多系列问题

Java 使用JDBCCategoryDataset的折线图中的多系列问题,java,sql,jfreechart,Java,Sql,Jfreechart,我想添加多个系列,以便在Java应用程序中使用JFreeChart创建折线图。我从数据库中检索值并使用这些值生成图表。但当时只有一条线出现在图表上。有人能帮助同时显示到行吗 指定“第一列将是类别名称和剩余列值(每列表示一个系列)。”若要获得两个系列,需要选择三个属性。应该可以在单个查询中使用,以区分对同一表的引用,如建议的,可能类似于以下内容: SELECT hardware, SUM(t1.quantity) AS Series1, SUM(t2.quantity) AS Series2 F

我想添加多个系列,以便在Java应用程序中使用
JFreeChart
创建折线图。我从数据库中检索值并使用这些值生成图表。但当时只有一条线出现在图表上。有人能帮助同时显示到行吗

指定“第一列将是类别名称和剩余列值(每列表示一个系列)。”若要获得两个系列,需要选择三个属性。应该可以在单个查询中使用,以区分对同一表的引用,如建议的,可能类似于以下内容:

SELECT hardware, SUM(t1.quantity) AS Series1, SUM(t2.quantity) AS Series2
FROM request_1v2 t1, request_1v2 t2
WHERE t1.date BETWEEN …
或者,您可以将这两个数据集合并到新的
CategoryDataset
中,并使用它创建单个图表

DefaultCategoryDataset dcd = new DefaultCategoryDataset();
for (int i = 0; i < dataset1.getColumnCount(); i++) {
    dcd.addValue(dataset1.getValue(dataset1.getRowKey(0), dataset1.getColumnKey(i)),
        dataset1.getRowKey(0), dataset1.getColumnKey(i));
    dcd.addValue(dataset2.getValue(dataset2.getRowKey(0), dataset2.getColumnKey(i)),
        dataset2.getRowKey(0), dataset1.getColumnKey(i));
}
JFreeChart chart = ChartFactory.createLineChart(…, dcd, …);
DefaultCategoryDataset dcd=新的DefaultCategoryDataset();
对于(int i=0;i
您的解决方案正在运行,但存在一个问题:对于系列1,我必须使用不同的日期;对于系列2,我必须使用另一个日期。但您编写的查询只适用于同一日期。你能告诉我在不同日期工作的查询吗。第一个日期适用于系列1,第二个dte适用于系列2。Thanks我有这两条sql语句:您能否将这两条语句组合成一条:
String query=“SELECT hardware,SUM(Quantity)FROM request_1v2,其中日期“+”介于“+txt1+”和“+txt2+”之间,按硬件分组”;String querys=“从请求中选择硬件,求和(数量),其中日期“+”介于“+txt5+”和“+txt6+”之间,按硬件分组”
您可以在
WHERE
子句中使用相同的别名;我已经在上面提出了一个替代方案。谢谢您的帮助:)
DefaultCategoryDataset dcd = new DefaultCategoryDataset();
for (int i = 0; i < dataset1.getColumnCount(); i++) {
    dcd.addValue(dataset1.getValue(dataset1.getRowKey(0), dataset1.getColumnKey(i)),
        dataset1.getRowKey(0), dataset1.getColumnKey(i));
    dcd.addValue(dataset2.getValue(dataset2.getRowKey(0), dataset2.getColumnKey(i)),
        dataset2.getRowKey(0), dataset1.getColumnKey(i));
}
JFreeChart chart = ChartFactory.createLineChart(…, dcd, …);