Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jasper reports 获得3分钟时间生成Jasper报告_Jasper Reports - Fatal编程技术网

Jasper reports 获得3分钟时间生成Jasper报告

Jasper reports 获得3分钟时间生成Jasper报告,jasper-reports,Jasper Reports,我正在使用Jasper报表开发发票打印系统,现在我可以打印报表,但加载报表需要2000毫秒,开始打印也需要2000毫秒, 这些是我正在使用的JAR文件 commons-beanutils-1.4 commons-digester-1.7 commons-logging-1.0.3 commons-beanutils-1.4 groovy-all-1.7.5 蜡染-all-1.7 条形码4J-2.1 itextpdf-5.1.0 jasperreports-6.0.3 xercesImpl-2.1

我正在使用Jasper报表开发发票打印系统,现在我可以打印报表,但加载报表需要2000毫秒,开始打印也需要2000毫秒, 这些是我正在使用的JAR文件

commons-beanutils-1.4 commons-digester-1.7 commons-logging-1.0.3 commons-beanutils-1.4 groovy-all-1.7.5 蜡染-all-1.7 条形码4J-2.1 itextpdf-5.1.0 jasperreports-6.0.3 xercesImpl-2.11.0 xml-API-ext-1.3.04

preparedStatement = conn.prepareStatement(sqlString);
    resultSet = preparedStatement.executeQuery();

    if (resultSet.next()) {

        HashMap<String, Object> hm = new HashMap<>();

        JasperDesign jasperDesign = JRXmlLoader.load(new File(
                "C:/Invoice/Invoice.jrxml"));

        JRDesignQuery designQuery = new JRDesignQuery();
        designQuery.setText(sqlString);
        jasperDesign.setQuery(designQuery);

        JasperReport jasperReport = JasperCompileManager
                .compileReport(jasperDesign);
        JasperPrint jasperPrint = JasperFillManager.fillReport(
                jasperReport, null, conn);

        for (int i = 0; i < copies; i++) {

            JasperPrintManager.printReport(jasperPrint, false);


        }

        JasperViewer.viewReport(jasperPrint); 
preparedStatement=conn.prepareStatement(sqlString);
resultSet=preparedStatement.executeQuery();
if(resultSet.next()){
HashMap hm=新的HashMap();
JasperDesign JasperDesign=JRXmlLoader.load(新文件(
“C:/Invoice/Invoice.jrxml”);
JRDesignQuery designQuery=新建JRDesignQuery();
designQuery.setText(sqlString);
setQuery(designQuery);
JasperReport JasperReport=JasperCompileManager
.compileReport(jasperDesign);
JasperPrint JasperPrint=JasperFillManager.fillReport(
康涅狄格州零号jasperReport);
对于(int i=0;i

上面的代码是我用来打印报表的,但是加载报表的时间太长了。请提出我的错误和其他想法…

我想SQL查询可能是问题所在。您是否尝试过在SQL查询工具中执行它并检查它运行了多长时间?优化它应该会获得性能优势

您还将运行两次查询:在报表之前和通过JasperFillManager.fillReport()调用填充报表时


如果没有具体原因来检查查询是否包含任何记录,我建议让JasperReports处理查询和未找到记录的情况。在这种情况下,您可以通过reportdesign中的“When no Data Type”属性确定特定行为。

我已经检查过SQL,它执行得很快。“您还将运行两次查询:在报告之前和通过JasperFillManager.fillReport()调用填充报告时。“我不明白这一点,你能给我解释一下吗,这是我放的示例代码。因此,我在我的项目中验证了When No Data Type。当我调试这段代码时,在这些行JRDesignQuery designQuery=new JRDesignQuery();JasperPrint JasperPrint=JasperFillManager.fillReport中花费了太多时间。”(jasperReport,null,conn);您应该将.jrxml预编译到.jasper文件中。这样,您可以直接将其加载到jasperReport对象中。然后,您可以通过将结果集包装到JResultSetDataSource中来传递结果集。它应该如下所示:
preparedStatement=conn.prepareStatement(sqlString);resultSet=preparedStatement.executeQuery();if(resultSet.next()){resultSet.beforeFirst();JasperReport-JasperReport=JRLoader.load(新文件(“C:/Invoice/Invoice.jasper”);jasperrprint-jasperrprint=JasperFillManager.fillReport(jasperReport,null,new JRResultSetDataSource(resultSet));
但是我无法在我的应用程序中获得.jasper编译的报告。但是如果我创建了新的示例项目,则会显示.jasper,这是为什么?