Wykres z bazy danych.

Odpowiedz Nowy wątek
2011-12-14 13:32
Dagman
0

Witam.
Jestem początkujący z javy i mam pewien problem. Chcę napisać program który będzie rysował wykres z bazy danych. Korzystam z gotowych wykresów JFreeChart (Chyba że macie jakis program który sam rysuje wykres). Mam gotowy program ale rysuje on wykres z podanych liczb a teraz potrzebuję żeby te liczby pobierał z bazy danych. Bazę danych zrobiłem w Microsoft Access i łączę się z nią poprzesz sterownik ODBC. Załóżmy że mam prostą tabelę temperatura i tam mamy dwie kolumny ID i temp. I chcę żeby wykres rysował się pobierając te temperatury z bazy danych.

Mam taki program w którym sam podaje liczby:


import java.awt.*;
import java.awt.image.*;
import java.io.File;
import java.util.*;
import java.sql.*;
import java.text.*;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

public class Wykres   {

protected BazaDanych m_BDProces = null;
public void laczenieBD()
   {
      String driver, url;
      String login, password;

      driver = "sun.jdbc.odbc.JdbcOdbcDriver";
      url = "jdbc:odbc:Pogoda";
      login = "";
      password = "";

      m_BDProces = new BazaDanych(driver, url);

      if( !m_BDProces.polaczenie(login, password) )
         System.exit(1);
   }

public Wykres(){
laczenieBD();

  // definiowanie serii:
    XYSeries dataSet= new XYSeries("seria 1");

        //"reczne" wypelnianie serii 1 - dodawanie kolejnych punktow
        dataSet.add(0.1, 4.4);
        dataSet.add(0.5, 12.4);
        dataSet.add(0.9, 21.4);
        dataSet.add(1.8, 43.2);
        dataSet.add(2.8, 27.9);
        dataSet.add(5.6, 3.3);
        dataSet.add(8.8, 67.6);
        dataSet.add(9.3, 18.2);
        dataSet.add(14.0, 97.5);
        dataSet.add(16.5, 200);
        dataSet.add(18.4, 34.9);
        dataSet.add(22.3, 11.1);
        dataSet.add(23.5, 26.4);
        dataSet.add(25.2, 1);

        // Tworzenie kolekcji serii zawierajacej serie dataSet
        XYSeriesCollection xySeriesCollection = new XYSeriesCollection(dataSet);

        // tworzenie XYDataSet
        XYDataset xyDataset = xySeriesCollection;
        // tworzenie Wykresu
        JFreeChart lineGraph = ChartFactory.createXYLineChart
                    ("Tytul Wykresu",  // Title
                      "Tytul osi X",           // X-Axis label
                      "Tytul osi Y",           // Y-Axis label
                      xyDataset,          // Dataset
                      PlotOrientation.VERTICAL,        //Plot orientation
                      true,                //show legend
                      true,                // Show tooltips
                      false               //url show
                     );

        // szybkie wysswietlanie Wykresu
        // przy pomocy klasy ChartFrame
        ChartFrame frame = new ChartFrame("Szybkie wyswietlanie Wykresu - klasa ChartFrame", lineGraph);
        frame.pack();
        frame.setVisible(true);

        // Zapisywanie Wykresu do pliku JPG:
        try {
        ChartUtilities.saveChartAsJPEG(new File("LineGraph.jpg"), lineGraph, 800, 600);
        } catch (Exception e) {
        System.out.println("Problem z zapisem Wykresu do pliku");
        }

       // WYSWIETLANIE WykresOW W OKNIE SWING
       // Tworzenie okienka Swing:
        JFrame jframe = new JFrame("Przeskaluj okno oraz kliknij prawym klawiszem myszy na obu Wykresach...");
        jframe.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        jframe.getContentPane().setLayout(new GridLayout( 2,2));
        jframe.setSize(640,480);
       // Dodawanie Wykresu jako obraz - klasa BufferedImage
        BufferedImage image = lineGraph.createBufferedImage(300,200);
        JLabel lblChart = new JLabel();
        lblChart.setIcon(new ImageIcon(image));
        jframe.getContentPane().add(lblChart);
        jframe.getContentPane().add(new JLabel("<<< Wykres dodany jako obraz (Image)"));
       // Dodawanie Wykresu przy pomocy klasy ChartPanel
        ChartPanel chartPanel = new ChartPanel(lineGraph);
        jframe.getContentPane().add(chartPanel);
        jframe.getContentPane().add(new JLabel("<<< Wykres dodany jako ChartPanel"));

        jframe.setVisible(true);
}
 }

Pozostało 580 znaków

2011-12-14 13:52
0

I czego nie rozumiesz? Nie wiesz jak pobrać dane z bazy danych?

Pozostało 580 znaków

2011-12-14 14:51
Dagman
0

No właśnie nie wiem jak pobrać dane z kolumny temp i je dodać do dataset. Bo tutaj mam ręczne wypełnienie serii.

Pozostało 580 znaków

2011-12-14 14:59
0

A Google używałeś?

http://www.kodejava.org/examples/114.html

edytowany 1x, ostatnio: sephirot8608, 2011-12-14 15:00

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0