2015-07-19 134 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

我做到了,但仍然是相同的錯誤 –