我在derby数据库上有一个日期参数之间的报告 当我通过两个文本字段发送日期来运行i时,我得到以下消息 得到以下报价错误消息。
线程“AWT-EventQueue-0”中的异常java.lang.ClassCastException: java.lang.String无法强制转换为java.util.Date at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.setDate(JRJdbcQueryExecuter.java:615)
调用jasper报告的代码在这里:
public void runREport() {
try {
Connection con1= null;
String Op=jTsubmain_no.getText();
int val = Integer.parseInt((String) Op.trim());
Map param1 = new HashMap();
param1.put("sub_no",val);
param1.put("fdate",jTfdate.getText());
param1.put("ldate",jTldate.getText());
try {
con1= DriverManager.getConnection("jdbc:derby://localhost:1527//accountsdb","accounts","accounts");
} catch (SQLException ex) {
Logger.getLogger(reports.class.getName()).log(Level.SEVERE, null, ex);
}
String jrxmlFileName = "C:/Users/hosam/Documents/NetBeansProjects/Accsys/src/accsys/report2.jrxml";
JasperDesign jasperDesign = JRXmlLoader.load(jrxmlFileName);
JasperReport jasperReport =JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param1, con1);
JasperViewer.viewReport(jasperPrint);
} catch (JRException ex) {
JOptionPane.showMessageDialog( null, ex);
}
}
答案 0 :(得分:2)
jrxml中传递的参数和定义之间有不同的类。
jTfdate.getText()
正在返回java.lang.String
在jrxml中你有参数
的定义<parameter name="fdate" class="java.util.Date">
<defaultValueExpression><![CDATA[""]]></defaultValueExpression>
</parameter>
解决方案,在参数地图中传递java.util.Date
对象。
实施例
param1.put("fdate",new SimpleDateFormat("yourPattern").parse(jTfdate.getText()));
如果模式"yourPattern"
应与解析的文字相对应,请参阅SimpleDateFormat pattern's。
如何抓住ParseException
并设置默认值,我留给您。