zapisywanie do wykresu słupowego

Odpowiedz Nowy wątek
2019-05-23 14:57
0

Witam,

jestem trochę świeży w javie więc proszę Was o pomoc.
Mam taki problem mam 3 rzeczy - połączenie do bazy przez sterowniki DB2 , zapytanie sql które wyciąga dane ale potrzebuje te dane zamienić na wykres słupowy i nie moge sobie z tym poradzić.
Dane do logowania są poprawne tylko je usunąłem.

package wykres2;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.time.LocalDateTime;

public class DB2 {

    public static Connection connectionDB2;

    public DB2() {
        if (connectionDB2 == null) {
            connect();
        } else {
            System.out.println(LocalDateTime.now() + " : " + "Already connected to DB2 database");
        }
    }

    // connect database Tomcat

    // connect database
    public void connect() {
        final String DATABASE_DRIVER = "com.ibm.db2.jcc.DB2Driver";
        //final String DB2SERVER = "";
        final String DB2SERVER = "";
        final String URL = "jdbc:db2://" + DB2SERVER + "/NDT";
        final String USERID = "";
        final String PASSWORD = "";

        try {
            // Load the Connector/J driver
            Class.forName(DATABASE_DRIVER);
            // Establish connection to DB2
            connectionDB2 = DriverManager.getConnection(URL, USERID, PASSWORD);
            System.out.println(LocalDateTime.now() + " : " + "Connected to local DB2 database");

        } catch (ClassNotFoundException | SQLException e) {

            System.out.println("Connected to local DB2 database failed");
            e.printStackTrace();
        }
    }

    // disconnect database
    public static void disconnect() {
        if (connectionDB2 != null) {
            try {
                connectionDB2.close();
                connectionDB2 = null;
                System.out.println(LocalDateTime.now() + " : " + "Connection to DB2 closed");

            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public void deleteTable(String table) {

        String queryDel = " delete " + table;
        Statement stmt = null;

        try {
            System.out.println(LocalDateTime.now() + " : " + "Deleting table " + table + " in given NDT database");
            connectionDB2.setAutoCommit(true);
            stmt = connectionDB2.createStatement();
            stmt.executeUpdate(queryDel);

        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("Error by deleting " + table + " table in NDT database");
        } finally {
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

        }
    }

}

drugi...

package wykres2;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class XMLDOCSDao extends DB2 {

    public void selectData(int since) {

        String selectQuery = ("SELECT TRKONZ, TRFIRM, TRZUNR, TRKENN, TRFKEY, TRDTA, TRTIA, TRVSTS, TRDTV, TRTIV, PCQTY, PSQTY, FSTAPN, LSTAPN"
                + " FROM XMLDOCS where TRDTA> "+ since +" order by trdta, trtia");

        Statement stmt= null;
        try {
            stmt = connectionDB2.createStatement();
            ResultSet rs = stmt.executeQuery(selectQuery);

            System.out.println("data \t\t time \t\t qty");

            while(rs.next()) {

                int data = rs.getInt("TRDTA");
                int czas = rs.getInt("TRTIA");
                int pcs = rs.getInt("PCQTY");

                System.out.print(data + "\t");
                System.out.print(czas + "\t");
                System.out.println("\t" + pcs );
            }   

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {

            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            disconnect();

        }

    //  int data; // trdta;
    //  int czas; // trtia;
    //  int ilosc; // psqty;

    }

}

i trzeci

package wykres2;
public class ShowData1 {

    public static void main(String[] args) {

        XMLDOCSDao xmldocsdao = new XMLDOCSDao();

        xmldocsdao.selectData(20190501);

    }

}

proszę o podpowiedź jak się za to zabrać.

edytowany 2x, ostatnio: Shalom, 2019-06-13 09:53

Pozostało 580 znaków

2019-05-23 14:59
0

Albo jestem ślepy, albo wstawiłeś 3 razy to samo.

Jaki masz problem? W czym mamy pomóc? Pogooglowałeś w ogóle jak można zrobić taki wykres ale w trakcie implementacji dostajesz błędy czy po prostu oczekujesz od nas gotowej implementacji?

Tak wybacz przez przypadek. potrzebuje te dane które wyciągnę przetowrzyć na wykres słupkowy, googlowałem i znalazłem rożnego rodzaju biblioteki typu FreeChart itp. ale coś mi to nie idzie, dlatego proszę o pomoc. - Bellebur 2019-05-23 15:04
Pokaż swoje próby i co CI nie wychodzi :) - kixe52 2019-05-23 15:10
no własnie chodzi o to że nie wiem jak te dane wyciągnąć i dac do wykresu , nie wiem jak to połączyć. - Bellebur 2019-05-23 15:11

Pozostało 580 znaków

2019-05-23 15:20
0

Może opisz osie. Bo domyślam się żę Y to ilość, X to czas, przedział czasu? Jakie dane masz, czego ten wykres dotyczy? Albo machnij jakąś tabelke w excelu z wykresem i pokaż o co cho

Pozostało 580 znaków

2019-05-23 15:29

Aby narysować wykres potrzebujesz dane. Dane "wyciągasz" z bazy ale tylko je printujesz. Zmień typ metody na odpowiedni, czy to lista, czy mapa, czy zbiór (nie wiem jakiego typu dane wycigąsz oraz jaką chcesz otrzymać zależność na wykresie). Dzięki temu będziesz mógł użyć te dane wyciągnięte z bazy dalej, nie tyko wewnątrz metody w której wyciągasz je z bazy.

Pozostało 580 znaków

2019-05-24 07:48
0

orchowskia napisał(a):

Może opisz osie. Bo domyślam się żę Y to ilość, X to czas, przedział czasu? Jakie dane masz, czego ten wykres dotyczy? Albo machnij jakąś tabelke w excelu z wykresem i pokaż o co cho

coś takiego mniej więcej

edytowany 2x, ostatnio: Bellebur, 2019-05-24 07:49

Pozostało 580 znaków

2019-05-24 07:59
0

http://www.jfree.org/index.html

edytowany 1x, ostatnio: au7h, 2019-05-24 07:59
Wyżej już pisałem o tym , proszę czytać uważniej posty - Bellebur 2019-05-24 08:06
Więc w czym problem, masz gotową bibliotekę to korzystaj z tych dobrodziejstw - au7h 2019-05-26 00:31

Pozostało 580 znaków

2019-05-28 11:10
0
au7h napisał(a):

http://www.jfree.org/index.html

Temat jest dalej otwarty , jakies inne pomysły ?

Temat jest dalej otwarty, a Ty dalej nie wstawiłeś, żadnej próby użycia gotowych bibliotek. Ktoś ma Ci wysłać gotowy kod? - kixe52 2019-05-28 11:11

Pozostało 580 znaków

2019-05-29 09:40
0
Bellebur napisał(a):
au7h napisał(a):

http://www.jfree.org/index.html

Temat jest dalej otwarty , jakies inne pomysły ?

package wykres2;

import java.awt.Color;
import java.awt.Font;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.IntervalMarker;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.IntervalXYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.Layer;
import org.jfree.ui.RectangleAnchor;
import org.jfree.ui.RefineryUtilities;
import org.jfree.ui.TextAnchor;

public class wykres extends ApplicationFrame {

    private static final long serialVersionUID = 1L;

    public wykres(final String title) {
        super(title);
        IntervalXYDataset dataset = createDataset();
        JFreeChart chart = createChart(dataset);
        final ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
        setContentPane(chartPanel);
    }

    private IntervalXYDataset createDataset() {
        final XYSeries series = new XYSeries("Ilość");
        series.add(1.0, 400.2);
        series.add(5.0, 294.1);
        series.add(4.0, 100.0);
        series.add(12.5, 734.4);
        series.add(17.3, 453.2);
        series.add(21.2, 500.2);
        series.add(21.9, null);
        series.add(25.6, 734.4);
        series.add(30.0, 453.2);
        final XYSeriesCollection dataset = new XYSeriesCollection(series);
        return dataset;
    }

    private JFreeChart createChart(IntervalXYDataset dataset) {
        final JFreeChart chart = ChartFactory.createXYBarChart(
            "",
            "", 
            false,
            "", 
            dataset,
            PlotOrientation.VERTICAL,
            true,
            true,
            false
        );
        XYPlot plot = (XYPlot) chart.getPlot();
        final IntervalMarker target = new IntervalMarker(400.0, 700.0);
        target.setLabel("Target Range");
        target.setLabelFont(new Font("SansSerif", Font.ITALIC, 11));
        target.setLabelAnchor(RectangleAnchor.LEFT);
        target.setLabelTextAnchor(TextAnchor.CENTER_LEFT);
        target.setPaint(new Color(222, 222, 255, 128));
        plot.addRangeMarker(target, Layer.BACKGROUND);
        return chart;    
    }

    public static void main(final String[] args) {

        final wykres demo = new wykres("Dane");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }

}

to jest tylko przykładowy wykres chce wczytać dane które pobieram z bazy danych , czy jesteś w stanie mi w tym pomóc ?
aaa i jeszcze za każdym razem uruchomienia aplikacji otwiera sie nowe okno a chce żeby mi to odświeżał bez otwierania kolejnego okna.

edytowany 4x, ostatnio: Shalom, 2019-06-13 09:53
ktoś coś ? - Bellebur 2019-05-30 10:26

Pozostało 580 znaków

2019-06-12 09:49
1

zamykam temat.

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