[JFreeChart] afficher un graphe dans une page jsp
Bonjour à tous,
je suis débutant en jsp et servlet.
je travaille sur un projet qui permet tracer des graphes à partir des données stockés sur une base de donnée. je dois afficher dans le graphe , dans l'axe des X la date stocké dans la BDD, la date est de format : "2009-03-23 11:05:20" et dans l'axe des Y les valeurs correspondantes pour chaque date.
si quelqu'un a un exemple de ce projet, merci de me le communiquer, car il y 1 mois que je galére sur le sujet.
Pour l'instant ce que j'ai réussi à faire, c'est créer une classe en java qui permet tracer un graphe , mais le soucis que j'ai rencontré , c'est que j'arrive pas à afficher les dates dans l'axe des X .
Voici le code de ma classe Java :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
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 LineChartTest{
public static void main(String arg[]) throws NumberFormatException, SQLException, ClassNotFoundException{
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = null ;
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url,username,password);
Statement stmt = con.createStatement();
try{
Class.forName("com.mysql.jdbc.Driver");
}
catch (ClassNotFoundException e){
System.out.println("Pilote non retrouvé");
}
try{
con= DriverManager.getConnection(url,username,password);
}
catch(SQLException sqle){System.out.println("Erreur lors de la connexion à la base de données");
//destroy();
}
XYSeries series = new XYSeries("Valeurs");
try {
con= DriverManager.getConnection(url,username,password);
stmt = con.createStatement();
}
catch (SQLException sqle){System.out.println("Erreur de requete");}
ResultSet rs = (ResultSet) stmt.executeQuery("select * from CPUtest");
while(rs.next()){
double v1=rs.getDouble("datex");
double v2=rs.getDouble("sample");
series.add(v1,v2);
}
rs.close();
/*
series.add(rs.getString("datex"),rs1.getString("value1"));
series.add(20.0, 20.0);
series.add(40.0, 25.0);
series.add(55.0, 50.0);
series.add(70.0, 65.0);
*/
XYDataset xyDataset = new XYSeriesCollection(series);
JFreeChart chart = ChartFactory.createXYLineChart
("Moniteur CPU", "value1", "value2",
xyDataset, PlotOrientation.VERTICAL, true, true, false);
ChartFrame frame1=new ChartFrame("Moniteur CPU",chart);
frame1.setVisible(true);
frame1.setSize(700,400);
}
} |
l'erreur qui m'affiche :
Citation:
Exception in thread "main" java.sql.SQLException: Bad format for number '2009-03-23 10:16:33' in column 1.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.ResultSet.getDoubleInternal(ResultSet.java:2467)
at com.mysql.jdbc.ResultSet.getDoubleInternal(ResultSet.java:2406)
at com.mysql.jdbc.ResultSet.getDouble(ResultSet.java:2367)
at com.mysql.jdbc.ResultSet.getDouble(ResultSet.java:2385)
at test.LineChartTest.main(LineChartTest.java:61)
le code marche bien pour autre champ que "Datex" (champ dans ma base de donnée qui correspond qu champ Date),(double v1=rs.getDouble("datex");).
et aprés je compte transformer cette classe en servlet pour que je puisse la exploité dans une page jsp.
Merci de votre aide.