cs_thanatos67
Messages postés51Date d'inscriptionvendredi 3 décembre 2004StatutMembreDernière intervention13 novembre 2008
-
27 mars 2007 à 16:28
cs_gattous
Messages postés100Date d'inscriptionvendredi 25 février 2005StatutMembreDernière intervention 7 octobre 2007
-
7 avril 2007 à 22:03
Salutation.
J'ai une application qui génère un tableau avec des données météorologiques stockées dans une base Mysql (qui fonctionne).
Je dois aussi créer un graphique à axes multiples (pour chaque colonnes) avec JFREECHART et le mettre dans un JPanel. Le problème c'est que je n'ai pas d'exemple pour le générer à partir des données Mysql.
Voilà ce que j'ai pour le moment :
try{
//On crée un nouveau document JDOM avec en argument le fichier XML
//Le parsing est terminé
document = sxb.build(new File("c:/Program Files/MeteoStat2007/connexion.xml"));
}
catch(Exception jdm) {
jdm.printStackTrace();
}
racine = document.getRootElement(); //balise <connexion>
Element filsDeRacine = racine.getChild("mysql"); // balise <mysql>
String host = filsDeRacine.getChild("host").getText();
String base = filsDeRacine.getChild("base").getText();
try{
sql = "select date_saisie,humidite,precipitation,pression,temp_interne,temp_externe,direct_vent,vit_vent from journalier where date_saisie between '"+date_origine+"' and '"+date_final+"';"; //la requete sql pour les données de ma base
conn = DriverManager.getConnection("jdbc:mysql://"+host+"/"+base+"?user=admin&password=jarod");
xyDataset = new JDBCXYDataset(conn);
xyDataset.executeQuery(sql);
conn.close();
}
catch(SQLException ex){
JOptionPane.showMessageDialog(null, "select loupé", "Message d'avertissement", JOptionPane.ERROR_MESSAGE);
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
}
});
}
return jCBTempInt;
}
J'ai mis en vert ce qui fonctionne. Le reste concerne jfreechart. Si vous pouviez m'aider à completer le code, ou me donner un exemple, je vous en serais tres reconnaissant.
try{
//On crée un nouveau document JDOM avec en argument le fichier XML
//Le parsing est terminé
document = sxb.build(new File("c:/Program Files/MeteoStat2007/connexion.xml"));
}
catch(Exception jdm) {
jdm.printStackTrace();
}
racine = document.getRootElement(); //balise <connexion>
Element filsDeRacine = racine.getChild("mysql"); // balise <mysql>
String host = filsDeRacine.getChild("host").getText();
String base = filsDeRacine.getChild("base").getText();
try{
sql = "select
date_saisie,humidite,precipitation,pression,temp_interne,temp_externe,direct_vent,vit_vent
from journalier where date_saisie between '"+date_origine+"' and
'"+date_final+"';"; //la requete sql pour les données de ma
base
conn = DriverManager.getConnection("jdbc:mysql://"+host+"/"+base+"?user=admin&password=jarod");
xyDataset = new JDBCXYDataset(conn);
xyDataset.executeQuery(sql);
conn.close();
}
catch(SQLException ex){
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 29 mars 2007 à 16:32
Ca semble juste, quel est le probleme exactement ?!!!
Perso je me serai assuré de l existance du Dataset avant de le fournir au Chart par contre...
Sinon vu le nmobre de series que tu utilise ;o) j espere que la table ne contient pas trop de donées ... sinon ca va ramer ton truc ;o) ou alors tu vas exploser la mémoire alloué à la VM ... ;o)... je trouve JFreeChart assé peu adapté à l exploitation de données provenant de SGBDR .
cs_gattous
Messages postés100Date d'inscriptionvendredi 25 février 2005StatutMembreDernière intervention 7 octobre 2007 7 avril 2007 à 21:56
bon, je crois que t'aurais dû remplir ta dataset avant de créer l'objet chart, pour que ton code devienne par exple :
private JCheckBox getJCBTempInt() {
if (jCBTempInt == null) {
jCBTempInt = new JCheckBox();
jCBTempInt.setBounds(new Rectangle(15, 105, 166, 26));
jCBTempInt.setText("Température Interne");
jCBTempInt.setFont(new Font("Dialog", Font.BOLD, 12));
jCBTempInt.setBackground(new Color(204, 204, 204));
jCBTempInt.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
// ici t'as créé ta chart, avec comme dataset l xyDataset non encore remplie de données
/* chart
= ChartFactory.createXYLineChart("Graphique meteo", "date", "donnees",
xyDataset, PlotOrientation.VERTICAL, true, true, true);
chart.setBackgroundPaint(java.awt.Color.white);
plot = chart.getXYPlot(); */
org.jdom.Document document = null;
Element racine = null;
SAXBuilder sxb = new SAXBuilder();
jTTableau.setModel(tableModel);
try{
//On crée un nouveau document JDOM avec en argument le fichier XML
//Le parsing est terminé
document = sxb.build(new File("c:/Program Files/MeteoStat2007/connexion.xml"));
}
catch(Exception jdm) {
jdm.printStackTrace();
}
racine = document.getRootElement(); //balise <connexion>
Element filsDeRacine = racine.getChild("mysql"); // balise <mysql>
String host = filsDeRacine.getChild("host").getText();
String base = filsDeRacine.getChild("base").getText();
try{
sql = "select
date_saisie,humidite,precipitation,pression,temp_interne,temp_externe,direct_vent,vit_vent
from journalier where date_saisie between '"+date_origine+"' and
'"+date_final+"';"; //la requete sql pour les données de ma
base
conn = DriverManager.getConnection("jdbc:mysql://"+host+"/"+base+"?user=admin&password=jarod");
// ici t'as rempli ta dataset
xyDataset = new JDBCXYDataset(conn);
xyDataset.executeQuery(sql);
// donc c'est apres cette étape que tu devras placer le code placé en commentaire là-haut
// et suivant ce que tu veux ke ton pgm fasse en cas d'exception, si tu veu créer la chart quoi que //ce soit le résultat, place ton code aprés le catch, sinon place le directement ici..;
conn.close();
}
catch(SQLException ex){
cs_gattous
Messages postés100Date d'inscriptionvendredi 25 février 2005StatutMembreDernière intervention 7 octobre 2007 7 avril 2007 à 22:03
je suis d'accord avec GodConan sur le pt que JFreeChart n'est pas assez adapté pour l'exploitation directe des données existantes dans des bases de donnés, perso je préfére toujours extraire mes données dans des listes, les traiter, puis les exploiter avec JFreeChart..