【发布时间】:2016-10-11 22:23:03
【问题描述】:
我的目标是编写一个小程序,该程序可以访问我们的公共安全数据库并检索救护车响应时间。然后我想获取该数据并生成直方图。 我很难让 JFreechart 打印救护车响应时间的直方图。当我运行我的代码时,Netbeans 会生成一条错误消息,说明:
线程“main”java.lang.ClassCastException 中的异常:org.jfree.data.jdbc.JDBCCategoryDataset 无法转换为 org.jfree.data.xy.IntervalXYDataset 在 EMSResearch.histogram1.main(histogram1.java:39) C:\Users\kulpandm\AppData\Local\NetBeans\Cache\8.1\executor-sn-ps\run.xml:53:Java 返回:1 构建失败(总时间:7 秒)
我完全不知道如何解决这个问题。如果我能打印出直方图,我就可以继续前进,让它看起来更适合我的报告。下面显示的是我的代码:
package EMSResearch;
import java.io.File;
import java.io.IOException;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.jdbc.JDBCCategoryDataset;
import org.jfree.data.xy.IntervalXYDataset;
public class histogram1
{
public static void main(String[] args) throws ClassNotFoundException
{
try
{
Connection conn = null;
conn = DriverManager.getConnection("jdbc:sqlserver://MyURL;database=MyDatabase;integratedsecurity=false;user=MyUser;password=MyPassword");
//dataset = new JDBCCategoryDataset(conn);
String query = "SELECT PUN_UnitID\n"
+ ", DATEDIFF(SECOND, IIU_tenroute, IIU_tArrive) AS [ResponseTime]\n"
+ "FROM IIncidentUnitSummary\n"
+ "WHERE IIU_tDispatch > 'may 15, 2016'\n"
+ "AND PUN_UnitID LIKE 'M[0-4]_'\n"
+ "AND IIU_tEnroute IS NOT NULL\n"
+ "AND IIU_tArrive IS NOT NULL\n"
+ "AND DATEDIFF(SECOND, IIU_tEnroute, IIU_tArrive) BETWEEN 0 AND 1800";
JDBCCategoryDataset dataset = new JDBCCategoryDataset(conn, query);
dataset.executeQuery(query);
conn.close();
//the following blows up.
JFreeChart chart;
chart = ChartFactory.createHistogram("data", "ws range", "freq", (IntervalXYDataset) dataset, PlotOrientation.VERTICAL, true, false, false);
int width = 560;
int height = 370;
File histChart = new File("c:\\histChart2.jpeg");
try
{
ChartUtilities.saveChartAsJPEG(histChart, chart, width, height);
} catch (IOException ex)
{
Logger.getLogger(chart2.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (SQLException ex)
{
ex.printStackTrace();
}
}
}
你能告诉我我做错了什么吗? 我能做些什么来解决这个问题? (请具体说明,因为我不是专家级程序员)。
【问题讨论】:
标签: jdbc jfreechart