<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java軟件報表軟件技術博客

    java報表軟件技術匯總 java報表軟件制作 報表軟件新聞
    posts - 355, comments - 100, trackbacks - 0, articles - 3
       :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

    我們前面講了幾個數據源,今天我們來講一下EJB數據源,這篇講完我們數據源這部分就講完了。數據連接不需要直接訪問數據庫,而是使用EJB做為數據源。FR通過定義程序數據集使用EJB的相關類獲取到EJB數據源,然后轉為我們里面的二維表作為報表數據源使用,進行展示。例如如下獲取到ejb數據所做的模板。

    一、 實現原理

    FineReport報表的數據來源可以是任何類型的數據,因為FineReport是通過AbstractTableData抽象類來讀取數據源的,因此用戶只要實現了AbstractTableData抽象類,也就可以用自定義類型的程序數據集,FineReport報表引擎就能夠讀取定義的數據源作為報表數據源使用。AbstractTableData抽象類主要有5個方法,具體使用可參考報表引擎API開發入門—簡單程序數據集。EJB程序數據源準備數據使用方法init(),獲取到ejb的javaBean,從而保存數據到ArrayList中。

    二、 實現步驟

    2.1 定義程序數據源
    定義DataModelDemo這個類代碼如下:

    package com.fr.data;
    import javax.naming.*;
    import javax.ejb.*;
    import java.rmi.*;
    import java.util.*;
    import com.fr.data.AbstractTableData;
    import examples.ejb.ejb20.basic.beanManaged.*;
    public class DataModelDemo extends AbstractTableData {
        
    private String[] columnNames;
        
    private ArrayList valueList = null;
        
    public DataModelDemo() {
            String[] columnNames 
    = { "Name""Score" };
            
    this.columnNames = columnNames;
        }
        
    // 實現其他四個方法
        public int getColumnCount() {
            
    return columnNames.length;
        }
        
    public String getColumnName(int columnIndex) {
            
    return columnNames[columnIndex];
        }
        
    public int getRowCount() {
            init();
            
    return valueList.size();
        }
        
    public Object getValueAt(int rowIndex, int columnIndex) {
            init();
            
    return ((Object[]) valueList.get(rowIndex))[columnIndex];
        }
        
    // 準備數據
        public void init() {
            
    // 確保只被執行一次
            if (valueList != null) {
                
    return;
            }
            
    // 保存得到的結果集
            valueList = new ArrayList();
            Context ctx 
    = null;
            Account ac 
    = null;
            AccountHome home 
    = null;
            
    try {
                
    // Contact the AccountBean container (the "AccountHome") through
                
    // JNDI.
                ctx = new InitialContext();
                home 
    = (AccountHome) ctx
                        .lookup(
    "java:/comp/env/BeanManagedAccountEJB");
                
    double balanceGreaterThan = 100;
                Collection col 
    = home.findBigAccounts(balanceGreaterThan);
                
    if (col != null) {
                    
    // 用對象保存數據
                    Object[] objArray = null;
                    Iterator iter 
    = col.iterator();
                    
    while (iter.hasNext()) {
                        Account bigAccount 
    = (Account) iter.next();
                        objArray 
    = new Object[2];
                        objArray[
    0= bigAccount.getPrimaryKey();
                        objArray[
    1= new Double(bigAccount.balance());
                        
    // 在valueList中加入這一行數據
                        valueList.add(objArray);
                    }
                }
            } 
    catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }

    注:使用之前需要先導入ejb的jar包
    2.2 編譯程序數據源
    將編譯后的DataModelDemo.class放到項目的WEB-INF下面的classes目錄下,因為DataModelDemo.java屬于包com.fr.data,所以DataModelDemo.class需要放到classes\com\fr\data目錄下。
    2.3 配置程序數據源
    新建報表,在報表數據集中新建程序數據源,選擇我們定義好的程序數據集,如下圖,名字可以自定義,如Pro。

    2.4 使用程序數據源
    配置好程序數據源后便可以使用定義的Pro程序數據集了,與其他類型的數據集使用方法是相同的,可以通過拖拽方法實現單元格數據列綁定。如下圖

    保存模板到ejb項目環境下,啟動Examples Server服務器,預覽模板就可以成功訪問到模板了!




    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产亚洲一区二区在线观看| 亚洲国产成人精品女人久久久| 国产高潮久久免费观看| 成人精品综合免费视频| 中文字幕不卡免费视频| 最近中文字幕免费完整| 好男人视频在线观看免费看片| 国产美女a做受大片免费| 三上悠亚亚洲一区高清| 亚洲男女性高爱潮网站| 亚洲人成网站在线在线观看| 一区二区视频在线免费观看| 国国内清清草原免费视频99| 亚洲精品国精品久久99热| 国产成人精品亚洲2020| 国产性生大片免费观看性| 亚洲AV成人片色在线观看| 亚洲1区2区3区精华液| 6080午夜一级毛片免费看 | 日韩中文字幕免费视频| 四虎成人免费网址在线| 污污的视频在线免费观看| 9久9久女女免费精品视频在线观看| 自拍偷自拍亚洲精品被多人伦好爽| 最新亚洲卡一卡二卡三新区| 国产成人精品免费久久久久| 深夜国产福利99亚洲视频| 久久久久亚洲精品天堂| 中文字幕在线成人免费看| 亚洲乱亚洲乱淫久久| 中文字幕无线码免费人妻| 亚洲黄色一级毛片| 美丽姑娘免费观看在线观看中文版 | 国产卡二卡三卡四卡免费网址| 久久99免费视频| 亚洲第一区精品日韩在线播放| 亚洲AV无码AV日韩AV网站| 亚洲色婷婷综合开心网| 在线91精品亚洲网站精品成人| 免费精品国偷自产在线在线| 羞羞的视频在线免费观看|