Jasper Report (2)--- 用JDBC做为数据源

用JDBC做为jasper report的数据源来连接数据库读取数据

  1. 在Eclipse中新建Java项目(过程略),我的Java项目的结构如下所示:

  

  注:这里的有关spring的jar包并不是改项目运行必须的,是我在做用JavaBean做为数据源的时候用到的包,请忽略。

  2.连接数据库代码(我连接的是Mysql数据库)

 1 package com.report.sample;
 2
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.SQLException;
 6
 7 public class ConnectionProvider {
 8     private static String driverClassName ="com.mysql.jdbc.Driver";
 9     private static String username="root";
10     private static String password="root";
11     private static String url="jdbc:mysql://localhost/test";
12
13     static{
14         try {
15             Class.forName(driverClassName);
16         } catch (ClassNotFoundException e) {
17             throw new RuntimeException(e);
18         }
19     }
20
21     public static Connection getConnection(){
22         try {
23             return DriverManager.getConnection(url, username, password);
24         } catch (SQLException e) {
25             throw new RuntimeException(e);
26         }
27     }
28 }

  3.获取编译后的.jasper文件所在的路径(有关.jrxml编译成.jasper文件我会单独再写)

 1 package com.report.sample;
 2
 3 import java.io.IOException;
 4
 5 public class GetPath {
 6
 7      public String showURL() throws IOException {
 8          return this.getClass().getResource("/").getPath();
 9      }
10 }

  4.连接数据源,将从数据库中读取的数据显示到PDF上并保存到和.jasper 文件同一个目录下(可以输出html, excel, pdf多种形式,我会在另一篇里面详细总结)

 1 package com.report.sample;
 2
 3 import java.io.File;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6 import java.sql.Connection;
 7 import java.util.HashMap;
 8 import java.util.Map;
 9
10 import net.sf.jasperreports.engine.JRException;
11 import net.sf.jasperreports.engine.JasperRunManager;
12
13 public class JRWithJdbcDatasource {
14
15     public static void main(String[] args) throws Exception{
16         Map<String, Object> parameters = new HashMap<String,Object>();
17         Connection connection = ConnectionProvider.getConnection();
18         GeneratePDFReport(new GetPath().showURL(), parameters, connection);
19     }
20
21     private static void GeneratePDFReport(String path, Map<String, Object> parameters, Connection connection){
22         try {
23             byte[] pdfStream = JasperRunManager.runReportToPdf(path + "/DBReport.jasper", parameters, connection);
24             File file = new File(path + "/report.pdf");
25             FileOutputStream op = new FileOutputStream(file);
26             op.write(pdfStream);
27             op.flush();
28             op.close();
29         } catch (IOException e) {
30             e.printStackTrace();
31         } catch (JRException e) {
32             e.printStackTrace();
33         }
34     }
35 }

  5.在项目中新建个目录来存放设计出来的report模板文件(我新建的文件夹是"res"), 然后右键新建 jasper report如下如所示步骤

  

  继续选择想要设计report采用的模板,按自己需要选择,我这里选择的是Blank_A4_Landscape

  

  然后选择要保存的目录,选择之前你新建的打算保存这个模板文件的那个目录并且给文件命名,我这里选择的是“res”目录, DBReport1.xml

  

  选择数据源,这里我选择的是“Database JDBC connect”

  

  设定有关JDBC数据源连接的相关信息

  

  注:这里我用的是test数据库里的t_employee表和v视图来做的实验,实验结果是我们可以从表和视图中均可以读取数据

  

  看到如图所示的界面,说明我们的JDBC连接已经创建成功可以正常的去访问数据库了

  

  6.使用jasper studio 来设计我们的report模板(有关如何去设计模板,我会在另外一篇里面大概说明,因为内容较多,我也只是会简单的设计太复杂的我还没来的及去学)

  

  选TextField然后双击会出现如图所示的界面,这里遵循的是我们Java的语法

  

  点击保存,我们的模板就有了一个字段:name了,我这里还添加了个字段是salary

  7.重要的部分,数据库还忘记给大家说了,这里我是简单的创建了一个test数据库里面就一张表t_employee, 还有一个视图v,创建语句如下:

  a) 创建数据库

1 CREATE DATABASE `test`

  b) 创建表t_employee

CREATE TABLE `t_employee` (
  `id` int(11) NOT NULL,
  `name` varchar(45) DEFAULT NULL,
  `age` varchar(45) DEFAULT NULL,
  `salary` int(11) DEFAULT NULL,
  `address` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  c) 创建视图 v (这里创建视图不是必须的,只是为了去做实验说明数据源不仅仅可以是表还可以是视图)

create view v as select id, name, age, salary, address from t_employee;

  8. 至此,我们就可以去运行,JRWithJdbcDatasource类里面的main方法来测试我们的过程是否正确,如果在你的项目的bin目录下生成一个.pdf文件,则说明创建成功

  因为我这里做的实验是生成pdf文件,所以生成的是PDF的格式,输出的路径可以自己定义。JDBC做为数据源来读取数据库中的值显示在PDF上面的实验到此就结束。  

  

  

时间: 2024-08-08 08:52:37

Jasper Report (2)--- 用JDBC做为数据源的相关文章

初试Jasper Report

第一步,打开Jaspersoft Studio,界面应该长这样(跟eclispse长的一样) 默认的项目名称是MyReports,当然也可以自己创建,此时我们需要这么干 点击File → New → Other,然后你会看到向导,此时勾选show all wizards(不勾选先看看长什么样子),然后点开java 或者jaspersoft studio两个文件夹,一般选的就是java project 或者jasperReports project,当然了,也可以将你自己的文件import到jas

spring配置jdbc与hibernate数据源

<bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">       <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>       <property n

对 JDBC 做一个轻量封装,待完善。。。

对 JDBC 做一个轻量地封装,顺便复习,熟悉sql,io,util,lang.Reflect等包的使用,泛型的使用,待完善... package com.yli.utils;import java.sql.*;import java.io.*;import java.util.Properties;public class DBConnection { private static String driver=null, url=null, user=null, password=null,

Jasper Report (1)--- Eclipse集成Ireport插件

环境的搭建(Eclipse中集成Ireport插件) 1. 首先在eclipse的工具栏点击 Help --> Eclipse MarketPlace --> Find 输入“ireport”点击搜索会出现如图所示的界面,按照图示进行安装插件(目前最新的是6.10) 2.安装成功后会提醒重新启动eclipse软件,重新启动后如图所示,验证插件是否安装成功 至此,eclipse集成ipreport插件已经成功,可以进行jasper report的设计了!

Jasper Report (3)--- 用JavaBean Collection做为数据源

1. 新建Java项目结构如下图所示(该项目中有子报表的知识这里不记录这点知识点): 2. 项目中代码片段 1.实现JRRewindableDataSource接口里面的方法 1 package com.iaspec.ireport.common; 2 3 import java.util.List; 4 5 import net.sf.jasperreports.engine.JRException; 6 import net.sf.jasperreports.engine.JRField;

JDBC高级应用 - 数据源(连接池)

数据源(连接池) (1)我们之前使用JDBC进行数据库访问时,首先是获得一个JDBC连接,执行增删改查操作后,关闭数据库连接. (2)但是我们使用的resultset.statement.conncetion在创建和关闭时都需要耗费较多时间,而且占用资源.特别是在企业级应用中,一般是很多人同时访问,如果每个人访问都给他们建立一个新的连接,并在使用完后又关闭,如果一个连接的建立和关闭以0.1秒计算,则1000个人就是100秒,如果是要承载上千万人同时访问的sina网站呢. 因此JDBC可以应对小型

用Jasper report来实现交叉报表的增长率计算

来源:     http://community.jaspersoft.com/questions/847490/how-get-annual-growth-rate-crosstab 交叉表的每一列都是动态生成的,进行列间计算时需要动态引用,用Jasper脚本实现此类需求有一定难度,用集算器在数据准备阶段实现则相对简单,下面用例子来说明. 数据库表store存储着多种产品在2014.2015年的销售量,需要用交叉表呈现每种产品每年的销售量,并计算出各产品的年增长率.部分源数据如下: 集算器代码

用Jasper report计算opening balance

来源: http://community.jaspersoft.com/questions/850400/how-create-report-opening-balance-using-jasper-reports . 根据存取金额计算初期余额时需要进行跨行计算,用Jasper表达式可以实现,但步骤复杂有一定难度,用集算器协助Jasper则可以轻松实现,下面用简化的例子来说明. data.csv存储着某账户各期资金存取情况,需要根据该文件计算出初期余额,部分源数据如下: 集算器代码: A1:以逗

报表示例——用Jasper report实现MongoDB join

多样性数据源是报表开发的常见问题,但用JasperReport等报表工具本身难以处理,比如展现两个MongoDB collection连接的结果.虽然JasperReport有virtual data source或table join,但这些功能只在商业版或高端版本出现,在免费版中实现的难度很大.而且这些功能只支持两个数据源的连接,要实现多连接则麻烦得多.另外,这些功能只是图形化界面,无法对连接后的数据进行类似SQL的结构化计算. 集算器具有结构化强计算引擎,支持多样性数据源,集成简单,可以协