首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JdbcDatasource的windward报告的一个问题

使用JdbcDatasource的windward报告的一个问题
EN

Stack Overflow用户
提问于 2014-02-12 14:26:04
回答 1查看 380关注 0票数 1

我正在尝试使用Windward报告来制作一个简单的报告。我使用JdbcDataSorce对象来连接Oracle数据库。代码如下:

代码语言:javascript
复制
package org.qrf.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;

import net.windward.bean.BeanProviderException;
import net.windward.datasource.DatasetField;
import net.windward.datasource.jdbc.JdbcDataSource;
import net.windward.datasource.jdbc.JdbcDataset;
import net.windward.datasource.jdbc.JdbcDatasetField;
import net.windward.env.DataConnectionException;
import net.windward.env.DataSourceException;
import net.windward.env.OutputLimitationException;
import net.windward.format.TemplateParseException;
import net.windward.tags.TagException;
import net.windward.util.LicenseException;
import net.windward.xmlreport.AlreadyProcessedException;
import net.windward.xmlreport.ProcessReport;
import net.windward.xmlreport.ProcessRtf;
import net.windward.xmlreport.ProcessRtfAPI;
import net.windward.xmlreport.SetupException;

public class SQLDatasourcePrintTask {       
public static void main(String[] args) {
    Connection conn = null;
    try {
        Class.forName ("oracle.jdbc.OracleDriver");
        conn = DriverManager.getConnection(
                "jdbc:oracle:thin:@//localhost:1521/mybase", "scott", "tiger");
        JdbcDataSource ds = new JdbcDataSource(conn);

        ProcessReport.init();

        // объявление полей таблицы шаблона
        ArrayList<JdbcDatasetField> fields = new ArrayList<JdbcDatasetField>();
        fields.add(new JdbcDatasetField("SNAME_EDI", "VARCHAR2", "SNAME_EDI", null, DatasetField.TYPE_COLUMN));
        fields.add(new JdbcDatasetField("NAME_EDI",  "VARCHAR2", "NAME_EDI",  null, DatasetField.TYPE_COLUMN));
        fields.add(new JdbcDatasetField("ID_EDI",    "NUMBER",   "ID_EDI",    null, DatasetField.TYPE_COLUMN));
        fields.add(new JdbcDatasetField("CODE_EDI",  "NUMBER",   "CODE_EDI",  null, DatasetField.TYPE_COLUMN));
        // объявление набора данных
        JdbcDataset dataset = new JdbcDataset("SPR_EDI_DATASET", 
                "select se.id_edi, se.name_edi, se.sname_edi, se.code_edi " +
                "   from SPR_EDI se", "---", fields);
        // Объявление потоков
        InputStream in = new FileInputStream(new File("template/sql_template.rtf"));
        OutputStream out = new FileOutputStream(new File("sql_datasource_out.rtf"));            
        // объявление RTF-процессора
        ProcessRtfAPI process = new ProcessRtf(
                in, out);
        process.processSetup();
        // объявление карты переменных
        HashMap<String, Object> variablesMap = new HashMap<String, Object>();
        variablesMap.put("id_edi", 100);

        ds.setDatasets(new Object[]{dataset});                  
        ds.setMap(variablesMap);                        
        process.processData(ds, "SPR_EDI_DATASET");         
        process.processComplete();
        out.flush();
        in.close();
        out.close();
    } catch (ClassNotFoundException e) {            
        e.printStackTrace();
    } catch (SQLException e) {          
        e.printStackTrace();
    } catch (DataConnectionException e) {           
        e.printStackTrace();
    } catch (LicenseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SetupException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (TagException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (AlreadyProcessedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (DataSourceException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (BeanProviderException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (TemplateParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (OutputLimitationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        try {
            conn.close();               
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

}

我还使用了用AutoTag工具创建的简单模板

当我运行这个程序时,看起来连接到数据库是成功的,但当我完成后打开输出文件时,我得到了与上图相同的内容。请帮我解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2014-06-27 23:56:22

通常,当发生这种情况时,问题出在您的调用上:

process.processData(ds,"SPR_EDI_DATASET");

使用名称"SPR_EDI_DATASET“,但模板中的标记对数据源具有不同的名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21720283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档