Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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
Java 如何连接Jasperrport以打印netbeans中Postgress db中的某些数据_Java_Postgresql_Jasper Reports - Fatal编程技术网

Java 如何连接Jasperrport以打印netbeans中Postgress db中的某些数据

Java 如何连接Jasperrport以打印netbeans中Postgress db中的某些数据,java,postgresql,jasper-reports,Java,Postgresql,Jasper Reports,我正在尝试使用JasperReports生成一些报告 这就是我到目前为止所做的 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { Connection conn = null; try{ Class.forName("org.postgresql.postgresql-42.2.

我正在尝试使用JasperReports生成一些报告 这就是我到目前为止所做的

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    Connection conn = null;

    try{

        Class.forName("org.postgresql.postgresql-42.2.2");
        conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/test", "postgres", "testPassword");
        String report = "";

        JasperReport jasperReport = JasperCompileManager.compileReport(report);

        JasperPrint jp = JasperFillManager.fillReport(jasperReport, null, conn);

        JasperExportManager.exportReportToPdfStream(jp, response.getOutputStream());
        response.getOutputStream().flush();
        response.getOutputStream().close();

    }catch(Exception ex){
        System.out.println(ex);
    }
}                                        
这一切都是我在这个人的帮助下完成的

但是“response.getOutputStream()”不起作用。 它找不到响应变量。(本教程是在eclipse中编写的,因此认为这就是原因,否则netbeans将无法找到它。)

解决这个问题的办法是什么? 您还有其他方法吗?

用于将PDF保存到文件:

JasperExportManager.exportReportToPdfFile(jp, "path/to/file.pdf");
如果您只想在屏幕上显示它:用于在窗口中显示它

JasperViewer.viewReport(jp, false);

代码有很多问题。让我们一次解决一个问题

加载JDBC驱动程序 以下代码将失败:

Class.forName(“org.postgresql.postgresql-42.2.2”);
这不是一个类,而是对包含驱动程序类的Java存档的引用。提供了以下使用JDBC驱动程序的示例:

String url = "jdbc:postgresql://localhost/test";
Properties props = new Properties();
props.setProperty("user","fred");
props.setProperty("password","secret");
props.setProperty("ssl","true");
Connection conn = DriverManager.getConnection(url, props);
-或-

您必须确保org.postgresql.postgresql-42.2.2.jar位于类路径的某个位置,以便可以找到驱动程序类

没有指定报告文件 以下代码不正确:

String report=”“;
这需要指向要加载JRXML文件的路径。例如:

    String report = "reports/Template.jrxml";
AWT和JSF? 下一行表示正在编写桌面应用程序,因为它引用了AWT ActionEvent:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
但是,报告将导出到响应输出流,这建议写入web浏览器:

JasperExportManager.exportReportToPdfStream(jp,response.getOutputStream());
JasperReports不能很好地处理JSF输出流。相反,您需要将Servlet与JasperReports一起使用,并使用简单的
h:commandLink
h:commandButton
从网页开始生成报告

有关详细信息,请参阅

响应变量 响应变量未在提供的代码段中声明。当使用Servlet时,响应变量由提供:

现在可以使用
response
变量,但只能在Servlet上下文中使用

干燥原理 作为次要说明,以下三行违反了:

相反,你可以写:

    OutputStream out = response.getOutputStream();
    JasperExportManager.exportReportToPdfStream(jp, out);
    out.close();
通常不需要调用
out.flush()
,因为
out.close()
将确保数据被刷新

推荐 在线查看演示如何使用Servlet生成报告的示例

也可以考虑使用一个基本的应用程序来运行报表,然后从命令行中运行,然后尝试与Web应用程序的servlet进行技术上复杂的操作。


您想将PostgreSQL数据库与Jasper report Studio或iReport连接以使用PostgreSQL数据库生成报告,对吗?我设计了一个应用程序,可以生成某些报告,它是用netbeans编写的。我想将PostgreSQL与Jasper Reprot连接您想对生成的报告做什么?您的PDF导出代码似乎来自一个Servlet,其中
response
是保存对浏览器响应的变量……您的方法似乎是一个Swing操作(按下按钮)如果浏览器没有响应。您可能希望将PDF保存到文件中…好的,首先使用此链接下载ireport,然后我将要求您进行数据库连接选择“数据库JDBC连接”-->下一步-->选择PostgreSQL JDBC连接“PostgreSQL(org.PostgreSQL.Driver)”在JDBC url中,传递正确的主机名、数据库名和端口号。。
protected void doGet(HttpServletRequest request,
                     HttpServletResponse response)
              throws ServletException,
                     IOException {
  // ... your code here to handle generating report ...
}
    JasperExportManager.exportReportToPdfStream(jp, response.getOutputStream());
    response.getOutputStream().flush();
    response.getOutputStream().close();
    OutputStream out = response.getOutputStream();
    JasperExportManager.exportReportToPdfStream(jp, out);
    out.close();