JasperReport报表自定义DataSource

本文档展示了如何实现一个名为`PrintDataSource`的类,该类继承自`JRDataSource`,用于处理JasperReport报表的自定义数据源。通过连接SQLServer数据库,执行SQL查询获取数据,并将其存储在ArrayList中。内容包括建立数据库连接,预编译SQL语句,遍历结果集并转换为HashMap存储,最后返回数据集供报表使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package  it.businesslogic.ireport.connection;

import net.sf.jasperreports.engine.*
;
//
import net.sf.jasperreports.engine.data.*;
//import java.sql.Statement;

import  java.sql.ResultSet;
import
 java.sql.Connection;
import
 java.sql.DriverManager;
import
 java.sql.SQLException;
import
 java.util.Map;
import
 java.util.HashMap;
import
 net.sf.jasperreports.view.JasperViewer;
import
 java.util.ArrayList;
import
 java.sql.ResultSetMetaData;
import
 java.sql.PreparedStatement;

public class PrintDataSource implements JRDataSource 
{
    
private int index = -1
;
    ArrayList dataSet 
= new ArrayList(); //存放从数据库里查询出来的数据集,里面存放HashMap

    Connection con = null;
    
public static String sql = "select school_code,right(school_name,4) as school_name,one_grade_class+two_grade_class+three_grade_class+four_grade_class+five_grade_class+six_grade_class+(select count(*) from class_definition) as total1,one_grade_class as one, two_grade_class as two,three_grade_class as three, four_grade_class as four,five_grade_class as five, six_grade_class as six,(select count( * ) from class_definition) as fushi from school_info where student_total>=? and student_total<=?"//传来的sql语句,填充数据集时用

    int cellCount = 0//记录数据集的列数
    public ArrayList getClassCount() throws SQLException {
        HashMap hm 
= null
;
        ArrayList list 
= new ArrayList(); //查询出来的数据集,返回给全局变量dataSet

        int a = 0//  记录记录集的行数

        
int smallAge[] =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值