gpt4 book ai didi

java - 如何使用 MySQL 和 Java 在 JFreechart 数据集中返回多行

转载 作者:行者123 更新时间:2023-11-29 00:17:48 25 4
gpt4 key购买 nike

我创建了一个单线图,连接到数据库,如下所示。

我刚刚使用了一个返回查询数据的数据集。我需要显示更多的行来在各种数据集中创建这个想法,但不知道如何实现它,甚至不知道它是否可能。

我见过多条线的图形示例,但没有一个能帮助我实现我想要的,即从数据库返回值。

String query="select date,tempfrom records where idSensor like 'Sensor1'";
JDBCCategoryDataset dataset = new JDBCCategoryDataset(CriaConexao.getConexao(),
query);
JFreeChart chart = ChartFactory.createLineChart("Records", "date", "temp",
dataset, PlotOrientation.VERTICAL, false, true, true);
BarRenderer renderer = null;
CategoryPlot plot= null;
renderer=new BarRenderer();
ChartFrame frame = new ChartFrame("Records", chart);
frame.setVisible(true);
frame.setSize(400,650);

最佳答案

来自Javadoc JDBCCategoryDataset:

The SQL query must return at least two columns. The first column will be the category name and remaining columns values (each column represents a series). Subsequent calls to executeQuery(String) will refresh the dataset.

因此在您的情况下,您应该在查询中添加列:

String query = "SELECT date, value1, value2, value3, value4 FROM records WHERE " +
"idSensor LIKE 'Sensor1'";

您也可以在 SQL 中执行子查询:

String query = "SELECT date, value1, (SELECT value2 FROM table2 WHERE " +
"records.date = table2.date), value3, value4 FROM records WHERE " +
"idSensor LIKE 'Sensor1'";

如果这不能给您足够的灵 active ,请从 Javadoc 寻求下一条建议:

NOTE: Many people have found this class too restrictive in general use. For the greatest flexibility, please consider writing your own code to read data from a ResultSet and populate a DefaultCategoryDataset directly.

---更新---

您可以自动连接(将表与自身连接)以将行转换为列,或者您可以编写自己的代码以从结果集中读取数据。一种可能的自动加入方式:

SELECT r.date, r1.tempfrom, r2.tempfrom, r3.tempfrom
FROM records r, records r1, records r2, records r3
WHERE r.date = r1.date AND r.date = r2.date AND r1.date = r3.date AND
r1.idSensor = 'Sensor1' AND r2.idSensor = 'Sensor2' AND r3.idSensor = 'Sensor3';

如果有可能对于其中一个 idSensors,您在日期上没有 tempfrom,那么您需要执行 OUTER JOIN。这在一定程度上取决于您的数据库,您如何编写外部连接,所以我无法包含它。但先试试这个,看看它是否对你有帮助。

关于java - 如何使用 MySQL 和 Java 在 JFreechart 数据集中返回多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22325006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com