2015-07-19 136 views
0

我创建了一个报告使用IReport.then我发现了一个代码 预览我的报告我的库存控制,这是一个代码,如何使用java预览jasper报告?

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"); 
        } 
    

但是当我运行这段代码是出现一个空的窗口, 请给一个支持

+0

您可以运行/从iReport的预览:http://community.jaspersoft.com/wiki/designing-report。你不需要额外的课程。 – PeterMmm

+0

thanks.i'll试试 –

回答

0

如果我正确地理解你的问题,你正在返回一个Statement,但它需要Connection .don创建一个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; 
    } 

} 
+0

谢谢,但我几乎完成我的应用程序,所以如果我编辑数据库类我编辑整个项目,但我测试创建连接,但报告没有出现。只有空窗口 –

+0

@如果你将返回类型声明为'Connection',你的方法应该返回一个connection.i编辑代码。实际上不要改变你现有的方法创建另一个方法,比如'getCon()',所以这不会影响其他代码 –

+0

我做到了,但仍然是相同的错误 –