明宇报表连接mysql_明宇报表2.5之简单测试

本文是关于明宇报表的简单示例,主要是记录学习的脚步

1、设计报表模板

d2cf064357c6bc50a6d4f6b918fc446b.png

设计好报表后 导出报表模板

2、编码

在webroot下添加如下文件

ff981375458ee1972d37b0d2894a3651.png

两个cab在明宇的包里面都有  ReportCenter.jsp 也有 分别在Deployment\Viewer和Deployment\JSP 里面

mrf文件为第一步设计导出的模板文件

测试代码:

test_report.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'test_report.jsp' starting page

try{

MREngine engine=new MREngine(pageContext);

//设置报表根目录

engine.setRootPath("/reports/");

//添加数据集

engine.addMRDataSet("Test_Nologging2",MRReportUtil.transResultSetToMRDataSet(new OracleDbAssist().executeQuery("SELECT tn.rule_code,tn.table_name,tn.table_comment,tn.column_name,tn.column_comment,tn.check_sql,tn.data_sql,tn.sum_sql from Test_Nologging2 tn")));

//家在报表模板

engine.addReport("Test_Nologging2");

//绑定数据集到模板

engine.bind();

//浏览器输出

}catch(Exception ex){

ex.printStackTrace();

}

%>

工具类

package com.undergrowth.util;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import com.ming.webreport.DataRecord;

import com.ming.webreport.MRDataSet;

import com.ming.webreport.MREngine;

/**

* 明宇报表工具类

* @author undergrowth

*

*/

public class MRReportUtil {

/**

* 转换ResultSet数据集到MRDataSet

* @param rs

* @return

* @throws SQLException

*/

public static MRDataSet transResultSetToMRDataSet(ResultSet rs) throws SQLException{

MRDataSet mrDataSet=new MRDataSet();

ArrayList dataRecList=new ArrayList();

while(rs.next()){

DataRecord dataRecord=new DataRecord();

//获取每一行对应的列名和列值

for(int i=1;i<=rs.getMetaData().getColumnCount();i++){

dataRecord.setValue(rs.getMetaData().getColumnName(i), rs.getObject(i));

}

dataRecList.add(dataRecord);

}

mrDataSet.addRows(dataRecList);

return mrDataSet;

}

}

数据库辅助类

package com.undergrowth.db;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.HashMap;

import java.util.Hashtable;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.sql.DataSource;

import org.apache.log4j.LogManager;

import org.apache.log4j.Logger;

/**

* 连接oracle数据库的辅助类

* 单例模式构建

* @author undergrowth

*

*/

public class OracleDbAssist {

private static Logger logger=LogManager.getLogger(OracleDbAssist.class);

private DataSource dataSource;

private Connection conn;

private Statement stmt;

private ResultSet rs;

private OracleDbAssist(){}

//使用volatile关键字 保证在多个线程中获取oDbAssist无误

private volatile static OracleDbAssist oDbAssist =null;

/**

* 双层锁

* @return

*/

public static OracleDbAssist getInstance(){

if(oDbAssist==null){

synchronized (OracleDbAssist.class) {

if(oDbAssist==null) {

oDbAssist=new OracleDbAssist();

oDbAssist.getDataSourceByJndi("SJPC");

}

}

}

return oDbAssist;

}

public DataSource getDataSource() {

return dataSource;

}

public Connection getConn() {

return conn;

}

public void setConn(Connection conn) {

this.conn = conn;

}

public Statement getStmt() {

return stmt;

}

public void setStmt(Statement stmt) {

this.stmt = stmt;

}

public ResultSet getRs() {

return rs;

}

public void setRs(ResultSet rs) {

this.rs = rs;

}

/**

* 通过jndi从weblogic里面获取数据源

* @return boolean flag 用于标示是否获取到数据源

*/

private boolean getDataSourceByJndi(String jndiDataSource){

boolean flag=false;

//提供初始化jndi上下文的参数

Hashtable env=new Hashtable();

//初始化工厂

env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");

env.put(Context.PROVIDER_URL, "t3://localhost:7001");

try {

Context ctx = new InitialContext(env);

dataSource=(DataSource) ctx.lookup(jndiDataSource);

flag=true;

logger.info("成功获取数据源!!");

} catch (NamingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

logger.error("加载数据源失败!!");

}

return flag;

}

/**

* 获取数据连接

* @return

* @throws SQLException

*/

public Connection getConnection() throws SQLException

{

if(getConn()==null) conn=dataSource.getConnection();

return getConn();

}

/**

* 执行sql查询

* @param sql

* @return

* @throws SQLException

*/

public ResultSet executeQuery(String sql) throws SQLException

{

stmt=getConnection().createStatement();

rs=stmt.executeQuery(sql);

return rs;

}

}

结果输出:

5f034c86d68b884c11fac1228393d9e2.png

写这个主要是一点,被坑了好久

就是IE浏览器无法加载明宇报表

在IE的管理加载项中都可以看到明宇报表的插件

f1371bd5aac32d76feabceb59b8faf3f.png

但是就是无法显示报表的话

找到明宇的控件 右键右击--》选择详细信息--》在所有站点上运行  就可以了

1f4e1091b3fa6e6503077cccf3ca1310.png

记录学习的脚步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值