在Java中将重复值导入到折线图

在Java中将重复值导入到折线图,java,sql,Java,Sql,我有一个数据库,里面有很多表空间。每天凌晨3:00备份所有表空间的已用空间和可用空间。所有备份都存储在一个名为TBS_SIZE的表中,该表包含TBS_名称、已用空间、可用空间和备份日期列 我需要像下面这样用Java将值放到折线图中。但问题是,价值观每天都在重复。因为所有的表空间名称每天都会被重新写入。因此,我的一些专栏正在循环。让我举一个例子: system | 50 | 1 | 12/01/2013 tmp | 43 | 8 | 12/01/2013 users | 80 | 2

我有一个数据库,里面有很多表空间。每天凌晨3:00备份所有表空间的已用空间和可用空间。所有备份都存储在一个名为TBS_SIZE的表中,该表包含TBS_名称、已用空间、可用空间和备份日期列

我需要像下面这样用Java将值放到折线图中。但问题是,价值观每天都在重复。因为所有的表空间名称每天都会被重新写入。因此,我的一些专栏正在循环。让我举一个例子:

system | 50 | 1 | 12/01/2013

tmp    | 43 | 8 | 12/01/2013

users  | 80 | 2 | 12/01/2013

system | 50 | 1 | 13/01/2013

tmp    | 45 | 6 | 13/01/2013

users  | 77 | 5 | 13/01/2013
我需要一个有用的想法,或者一个可以帮助我的参考资料

我想结帐:

以下是一些编辑的网站外示例:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;


public class LineChartSample extends Application {

    @Override public void start(Stage stage) {
        stage.setTitle("Line Chart Sample");
        final CategoryAxis xAxis = new CategoryAxis();
        final NumberAxis yAxis = new NumberAxis();
         xAxis.setLabel("Month");
        final LineChart<String,Number> lineChart = 
                new LineChart<String,Number>(xAxis,yAxis);

        lineChart.setTitle("Tablespaces, 2010");

        //query your data here and prepare to insert it into the chart

        XYChart.Series series1 = new XYChart.Series();
        series1.setName("system ");

        series1.getData().add(new XYChart.Data("Jan", 23));
        series1.getData().add(new XYChart.Data("Feb", 14));
        series1.getData().add(new XYChart.Data("Mar", 15));
        series1.getData().add(new XYChart.Data("Apr", 24));
        series1.getData().add(new XYChart.Data("May", 34));
        series1.getData().add(new XYChart.Data("Jun", 36));
        series1.getData().add(new XYChart.Data("Jul", 22));
        series1.getData().add(new XYChart.Data("Aug", 45));
        series1.getData().add(new XYChart.Data("Sep", 43));
        series1.getData().add(new XYChart.Data("Oct", 17));
        series1.getData().add(new XYChart.Data("Nov", 29));
        series1.getData().add(new XYChart.Data("Dec", 25));

        XYChart.Series series2 = new XYChart.Series();
        series2.setName("tmp");
        series2.getData().add(new XYChart.Data("Jan", 33));
        series2.getData().add(new XYChart.Data("Feb", 34));
        series2.getData().add(new XYChart.Data("Mar", 25));
        series2.getData().add(new XYChart.Data("Apr", 44));
        series2.getData().add(new XYChart.Data("May", 39));
        series2.getData().add(new XYChart.Data("Jun", 16));
        series2.getData().add(new XYChart.Data("Jul", 55));
        series2.getData().add(new XYChart.Data("Aug", 54));
        series2.getData().add(new XYChart.Data("Sep", 48));
        series2.getData().add(new XYChart.Data("Oct", 27));
        series2.getData().add(new XYChart.Data("Nov", 37));
        series2.getData().add(new XYChart.Data("Dec", 29));

        //etc.
        //create a series for each tbs_name


        Scene scene  = new Scene(lineChart,800,600);       
        lineChart.getData().addAll(series1, series2);//then add all series here!

        stage.setScene(scene);
        stage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}
其中KeyType是唯一的tbs_名称,ValueType是您创建的一个对象,它只包含三个数据备份_日期、已用空间和可用空间。例如:

public class ClassName{
    String backup_date, used_space, free_space;
    public ClassName(String backup_date, String used_space, String free_space){
        this.backup_date = backup_date;
        this.used_space = used_space;
        this.free_space = free_space;
    }
    //write rest of the methods
}

在您链接的示例中,它构成了自己的数据:

/*
 * retrieve stock prices out of a randomDB 
 */
private double[] getStockData(String name) {
    Random random = new Random(System.currentTimeMillis());
    double[] data = new double[MINUTES_BACK];
    double start = random.nextDouble() * 1000.0 + 1.0;
    for (int i = 0; i < data.length; i++) {
        start += start * 0.4 * random.nextGaussian();
        if(start < 0)  start = - start;
        data[i] = start;
    }
    return data;
}

您只需要找到一种方法,用您自己的数据替换此随机算法,无论数据来源是什么。

那么您需要显示什么值?每天所有tbs_名称的总使用空间?类似这样的SQL查询如何:尝试以下SQL选择“使用空间总和”、“按备份日期从tbs_大小组备份日期”这将为您提供总空间日期。然后您可以在Java中提取这些数据…我需要每天查看值,而不是总大小。上面的查询将显示每天使用的总空间值。。根据你的例子,第12位显示173,第13位显示172。这不是你想看到的吗?哦,我一开始没读你的问题。我需要查看每个表空间的值。您的示例为+1,但这并不能解决我的问题。因为结果集是逐行读取的。我需要使用至少3-4个查询。这很好。只需先生成数据,然后进行组织。一旦组织起来,您就可以通过循环和方法生成创建这些系列的系统方法。
/*
 * retrieve stock prices out of a randomDB 
 */
private double[] getStockData(String name) {
    Random random = new Random(System.currentTimeMillis());
    double[] data = new double[MINUTES_BACK];
    double start = random.nextDouble() * 1000.0 + 1.0;
    for (int i = 0; i < data.length; i++) {
        start += start * 0.4 * random.nextGaussian();
        if(start < 0)  start = - start;
        data[i] = start;
    }
    return data;
}