我在 derby 数据库上有一份包含日期参数之间的报告 当通过两个文本字段发送日期以运行 i 时,我收到以下消息 得到下面的引用错误消息。
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to 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);
}
}
最佳答案
在传递的参数和 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
并设置默认值,我留给你。
关于java - 将日期参数传递给 jasper 报告时如何解决 ClassCastException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35092712/