如何使用java预览jasper报告?

时间:2015-07-19 10:30:41

标签: java database jasper-reports

我使用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");
        }
    
  3. 但是当我运行此代码时,它会出现一个空窗口,     请给予支持

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,那么您将返回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;
    }

}