繁体   English   中英

如何使用Java预览Jasper报告?

[英]How to preview jasper report using java?

我已经使用IReport为库存控制创建了一个报告。然后我找到了一个预览报告的代码,这是该代码,

package Report;

import com.mysql.jdbc.Connection;
import java.awt.Container;
import java.sql.Statement;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.swing.JRViewer;

/**
 *
 * @author Hasindu
 */
public class ReportView extends JFrame
{
    public ReportView(String fileName)
    {
        this(fileName, null);
    }
    public ReportView(String fileName, HashMap para)
    {
        super("ABC Solutions Employee/Project Management System (Report Viewer)");
        try {
            DB dba=new DB();
            Connection con=DB.getConnection();

            try
            {
                JasperPrint print = JasperFillManager.fillReport(fileName, para,con);
                JRViewer viewer = new JRViewer(print);
                Container c = getContentPane();
                c.add(viewer);
            }
            catch (JRException j){
                j.printStackTrace();

            }
            setBounds(10, 10, 900, 700);
            setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        } catch (Exception ex) {
            Logger.getLogger(ReportView.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}

但是我的数据库连接代码正在返回一条语句,这是我的数据库连接代码,

package Report;

import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;


public class DB {


public static Statement getConnection()throws Exception{

    Class.forName("com.mysql.jdbc.Driver");
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/report", "root", "123");
    Statement st=con.createStatement();

    return st;
}

}

现在我有两个问题,

  1. 如何编辑报告预览代码以与我的数据库连接代码连接
  2. 我通过创建此数据库连接代码来测试报告预览代码,

      public static Connection getCon()throws Exception{ Class.forName("com.mysql.jdbc.Driver"); Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/report", "root", "123"); } 

但是当我运行此代码时,它显示为空窗口,请提供支持

如果我正确理解了您的问题,则返回的是Statement但它需要Connection不要创建statement创建与您的数据库的connection ,然后像下面的代码示例一样返回该connection

reportview类中

DB dba=new DB();
Connection con=DB.getCon();

db.class

package Report;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;

public class DB {

    public static Connection getCon() throws Exception {

        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/report", "root", "123");
        return con;
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM