FineReport的数据库
定义数据连接是将数据库与设计器进行绑定,通过数据连接,报表就可以从数据库中读取、写入数据和修改数据等。
1. 数据支持类型
FineReport连接数据源的方式多种多样,支持通过JDBC的方式直接连接数据库,或者通过JNDI的方式与应用服务器共享数据连接。也指出通过JCO连接SAP系统。
FR在设计器和平台中都可以新建数据连接,但是平台仅支持使用JDBC的数据连接的管理。
1.1 JDBC类
数据源 |
版本 |
驱动 |
URL |
APACHE KYLIN |
1.5、2.2 |
org.apache.kylin.jdbc.Driver |
jdbc:kylin://<hostname>:<port>/<kylin_project_name> |
HP Vertica |
Vertica_7.2.1 |
com.vertica.jdbc.Driver |
jdbc:vertica://verticaHost:port/databaseName |
IBM DB2 |
DB2_7.2; |
com.ibm.db2.jcc.DB2Driver |
jdbc:db2://hostname:port/dbname |
INFORMIX |
11.7;11.5 |
com.informix.jdbc.IfxDriver |
jdbc:informix-sqli://{host}:{port}/{database}:INFORMIXSERVER={server} |
Microsoft SQL Server |
SQL server 2000; |
com.microsoft.sqlserver.jdbc.SQLServerDriver |
jdbc:sqlserver://localhost:1433;databaseName= |
MySQL |
MySQL_5.1; MySQL_5.6.28; MySQL_5.6.29; MySQL_5.6.31;MySQL_5.6.34; MySQL_5.6.35; MySQL_6.5 |
【驱动1】com.mysql.jdbc.Driver; |
jdbc:mysql://localhost/dbname |
Oracle |
oracle 9i;oracle_9.2; oracle10.2.0; oracle 11g; oracle_11g2; oracle_11.2.0.3; oracle_11.2.0.4; oracle_11.2.3; oracle 12c; oracle 10g AIX版本 |
oracle.jdbc.driver.OracleDriver |
jdbc:oracle:thin:@localhost:1521:databaseName |
Pivotal Greenplum Database |
【驱动1】org.postgresql.Driver; |
【对应驱动1】jdbc:postgresql://hostname:port/dbname |
|
Postgresql |
postgresql_9.4.7;9.5.0; |
org.postgresql.Driver |
jdbc:postgresql://hostname:port/dbname |
DERBY |
org.apache.derby.jdbc.ClientDriver |
jdbc:derby://localhost:1527/ |
|
KINGBASE |
com.kingbase.Driver |
jdbc:kingbase://hostname:port |
|
Gbase 8A |
Gbase 8A(基于mysql) |
com.gbase.jdbc.Driver |
jdbc:gbase://hostname:port/dbname |
Gbase 8S |
Gbase 8S(基于infomix) |
com.gbasedbt.jdbc.IfxDriver |
jdbc:informix-sqli://{host}:{port}/{database}:INFORMIXSERVER={server} |
Gbase 8T |
Gbase 8T(基于informix) |
com.informix.jdbc.IfxDriver |
jdbc:informix-sqli://{host}:{port}/{database}:INFORMIXSERVER={server} |
Presto |
Presto_0.152;0.169 |
com.facebook.presto.jdbc.PrestoDriver |
jdbc:presto://host:port/catalog |
SAP HANA |
com.sap.db.jdbc.Driver |
jdbc:sap://hostname:port?reconnect=true |
|
SAP Sybase |
SAP Sybase ASE_12.5;SAP Sybase IQ |
com.sybase.jdbc4.jdbc.SybDriver |
jdbc:sybase:Tds:hostname:2638/databasename |
TeraData |
Teradata_v12; TeraData_15.00.06.04 |
com.ncr.teradata.TeraDriver |
jdbc:teradata://localhost/CLIENT_CHARSET=EUC_CN,TMODE=TERA,CHARSET=ASCII,LOB_SUPPORT |
APACHE IMPALA |
impala 2.2; |
com.cloudera.impala.jdbc41.Driver |
jdbc:impala://hostname:port/_impala_builtins |
Hadoop Hive |
hive_1.1; Hadoop_Hive_1.2;hive2.3; |
org.apache.hive.jdbc.HiveDriver |
jdbc:hive2://hostname:port/databasename |
SPARK |
1.6; |
org.apache.hive.jdbc.HiveDriver |
jdbc:hive2://hostname:port/databasename |
TRANSWARP INCEPTOR(星环) |
星环_4.6.4; |
org.apache.hive.jdbc.HiveDriver |
jdbc:hive2://hostname:port/databasename |
APACHE Phoenix |
org.apache.phoenix.jdbc.PhoenixDriver |
jdbc:phoenix:hostname:port/dbname |
|
ADS |
com.mysql.jdbc.Driver |
jdbc:mysql://hostname:port/my_ads_db |
|
Amazon Redshift |
【驱动1】com.amazon.redshift.jdbc4.Driver |
【驱动1】jdbc:redshift://endpoint:port/database |
|
H2 |
org.h2.Driver |
jdbc:h2://${ENV_HOME}/../databaseName |
|
Hsql |
com.fr.third.org.hsqldb.jdbcDriver |
jdbc:hsqldb:file:[PATH_TO_DB_FILES] |
|
Sqlite |
org.sqlite.JDBC |
jdbc:sqlite:[PATH_TO_DB_FILES] |
|
GaussDB 200 |
org.postgresql.Driver |
jdbc:postgresql://hostname:port/dbname |
|
FusionInsight elk |
org.postgresql.Driver |
jdbc:postgresql://hostname:port/dbname |
|
FusionInsight HD |
org.apache.hive.jdbc.HiveDriver |
jdbc:hive2://10.135.0.110:24002,10.135.0.67:24002,10.135.0.66:24002/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;sasl.qop=auth-conf;auth=KERBEROS;zk.principal=zookeeper/hadoop;principal=hive/hadoop.hadoop.com@HADOOP.COM; |
|
华为云DWS |
org.postgresql.Driver |
jdbc:postgresql://hostname:port/dbname |
|
Hbase |
org.apache.phoenix.jdbc.PhoenixDriver |
jdbc:phoenix:hostname:port/dbname |
|
cache |
com.intersys.jdbc.CacheDriver |
1.2 多维数据库类
Microsoft Analysis Services(ssas) |
SAP HANA |
Oracle Essbase |
Tomcat配置JNDI连接 |
Websphere配置JNDI连接——待完善 |
Weblogic配置JNDI连接 |
Jboss配置JNDI连接——待完善 |
1.3 JNDI
Tomcat配置JNDI连接 |
Websphere配置JNDI连接——待完善 |
Weblogic配置JNDI连接 |
Jboss配置JNDI连接——待完善 |
1.4 其他
[设计器]SAPBW数据连接 |
[设计器]MongoDB数据库连接 |
JSON数据集 |
2 连接池
2.1 连接池原理
连接池主要由三部分组成:连接池的建立、连接池中连接使用的治理、连接池的关闭。
连接池技术的核心思想,是连接复用,通过建立一个数据库连接池以及一套连接使用、分配、治理策略,使得该连接池中的连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。另外,由于对JDBC中的原始连接进行了封装,从而方便了数据库应用对于连接的使用(特别是对于事务处理),提高了开发效率,也正是因为这个封装层的存在,隔离了应用的本身的处理逻辑和具体数据库访问逻辑,使应用本身的复用成为可能。
2.2 连接池属性
FR 连接池属性,使用的是 DBCP 连接池,下面介绍其设置方法及其属性中各参数的意义;如果访问模板时,报连接超时、等待状态,警告如下:则
则需要把相应连接数调大。
设置方法:
点击 服务器>定义数据连接,如下图所示,点击连接池属性,弹出连接池属性编辑框,调整最大活动连接数:
参数说明:
名称 | 举例 | 含义 |
---|---|---|
初始化连接数 | initialSize="1" | 初始化线程数,开始自动建立一个与数据库的连接 |
最大活动连接数 | maxActive="200" | 可以从对象池中取出的对象最大个数,为0表示没有限制 |
最大空闲连接数 | maxIdle="100" | 最大等待连接中的数量,设为负数则没有限制(对象池中对象最大个数) |
最小空闲连接数 | minIdle="2" | 对象池中对象最小个数 |
最大等待时间(毫秒) | maxWait="1000" | 最大等待时间,单位为 ms,超出时间会丢出错误信息 |
SQL 验证查询 | validationQuery="SQL语句" | 验证连接是否成功,SQL 和 SELECT 指令至少要返回一行 |
获取连接前检验 | testOnBorrow="false" | 取得对象时是否进行验证,检查对象是否有效,默认为 false |
归还连接前检验 | testOnReturn="true" | 返回对象时是否进行验证,检查对象是否有效,默认为 false |
开启空闲回收器检验 | testWhileIdle="true" | 空闲时是否进行验证,检查对象是否有效,默认为 false |
空闲连接回收器休眠时间(毫秒) | timeBetweenEvictionRunsMillis="1000" | 失效检查线程运行时间间隔,如果小于等于 0,不会启动检查线程 |
空闲连接回收检查数 | numTestsPerEvictionRun="2" | 失效检查线程运行次数 |
保持空闲最小时间 | minEvictableIdleTimeMillis="18005000" | 大于 0,进行连接空闲时间判断,或为 0,对空闲的连接不进行验证 |
连接池满问题
若日志报ORA-12519 TNS:no appropriate service handler found,是数据库连接失败的错误,12519错误是监听不能提供服务。
原因:
原因是我们定义数据连接后,点击连接时,此时会用掉一个连接池中的一个连接。
而在定义数据集后,点击预览按钮,此时连接池就会分配连接,可能会使用之前那个连接(之前的连接已释放),或分配一个其他的连接或新建一个连接。
若此时连接池所有连接都已用完,就会报如下错误:
当客户请求数据库连接时,首先是查看连接池中是否有空闲连接(指当前没有分配出去的连接)。
假如存在空闲连接,则把连接分配给用户,并作相应的处理(即标记该连接为正在使用,引用计数加1)。
假如没有空闲连接,则查看当前所开的连接数是不是已经达到maxConn(最大连接数),若没达到就重新创建一个连接给请求的客户;
若达到就按设定的maxWaitTime(最大等待时间)进行等待;
若等待maxWaitTime后,仍没有空闲连接,就抛出无空闲连接的异常给用户。
解决方案:
若您在FR连接池属性的设置中,已将最大连接数设置得过大,还出现如上的报错,此时通常就是数据库进程(processes)达到上限导致的,可增大数据库中的连接数目来解决此问题。如下在数据库中修改最大连接数:
查看当前的连接数
<span style="color:#334356"><span style="color:#1bc1a1"><img data-cke-saved-src="http://help.finereport.com/js/clipboard/clippy.png" src="http://help.finereport.com/js/clipboard/clippy.png" alt="Copy to clipboard" class="clippy" /><code>select count(*) from V$process;</code></span></span>
查看数据库允许的最大连接数
<span style="color:#334356"><span style="color:#1bc1a1"><img data-cke-saved-src="http://help.finereport.com/js/clipboard/clippy.png" src="http://help.finereport.com/js/clipboard/clippy.png" alt="Copy to clipboard" class="clippy" /><code>select value from V$parameter where name=<span style="color:#dd1144">'processes'</span>;</code></span></span>
修改最大连接数为1000
<span style="color:#334356"><span style="color:#1bc1a1"><img data-cke-saved-src="http://help.finereport.com/js/clipboard/clippy.png" src="http://help.finereport.com/js/clipboard/clippy.png" alt="Copy to clipboard" class="clippy" /><code>alter system set processes=<span style="color:teal">1000</span> scope=spfile</code></span></span>
重启数据库,再查询最大连接数,数字改变就表示已修改成功。
说明:当客户释放数据库连接时,先判定该连接的引用次数是否已超过规定值,假如超过就删除该连接,并判定当前连接池内总的连接数是否小于minConn(最小连接数),若小于就将连接池布满;假如没超过就将该连接标记为开放状态,可供再次复用。可看出正是这套策略保证了数据库连接的有效复用,避免频繁地建立、释放连接所带来的系统资源开销。
FineReport的数据库相关推荐
- 经营报表-FineReport配置Oracle外接数据库(2)
1. 配置外接数据库 1.1 外接数据库配置入口 外接数据库的配置入口,有三种形式: 1)超级管理员第一次登录数据决策系统时,即可为系统配置外接数据库.如下图所示: 2)对于使用内置数据库的系统,管理 ...
- 帆软报表列表_帆软报表(finereport)读取数据库表数据生成报表
帆软报表(finereport)读取数据库表数据生成报表 发布时间:2019-01-14 16:48, 浏览次数:856 , 标签: finereport 1.首先是安装帆软报表软件,微软的傻瓜式安装 ...
- FineReport BI报表工具
FineReport报表是一个纯国产的BI工具,以表格.图表的形式来动态展示数据,通过报表进行数据分析,进而用于辅助经营管理决策. FineReport 是一款用于报表制作,分析和展示的工具,用户通过 ...
- finereport实现报表表头固定
乘着研究生还没有入学来打打暑假工,主要为财务做一些企业级的web报表,使用的软件是finereport,数据库用的orcel. 问题 第一天汇总数据就遇到了问题,leader说财务报表比较严格,数据表 ...
- python sqlserver 列名_报表自动化,三流用Excel,二流用Python,一流用它
从事数据工作的人都知道,企业每天都要做很多报表,这个过程当中会涉及到很多手工操作和常规性报表.为了减少人工介入,节省工作时间,我们会想办法将一部分操作用工具或代码来替代,这个过程就称为报表自动化. 报 ...
- Excel、Python靠边站,这才是实现报表自动化最快的方法
最近在跟隔壁部门闲聊的时候,我发现会有这样的情况.他们跟我吐槽说,每天需要花很多时间做报表,但我发现其实他们80%的报表都是机械.重复式的手工操作,最夸张的一张报表需要花两个小时才能更新完.作为报表老 ...
- 能让IT部门告别996的办公神器,你一定要知道
前段时间在某个IT同行群里认识了个朋友,为了避免不必要的麻烦,就叫他小林. 小林是山西某制造企业的技术负责人,下面带了35个技术人员,负责他们公司MES.HR.CRM.ERP等多个日常运营类信息系统. ...
- 自动出报表,零代码做驾驶舱,我找到了Excel的顶级替代
大家有没有觉得,做报表也不是一份性价比高的活了呢? 做了3年报表的我,从只会vlookup开始学Excel,中间也穿插学习了一些VBA和Access.原以为精通Excel可以走天下,但是越到后面越发现 ...
- source insight
Source Insight 4.0是一款功能强大的程序编辑器和代码浏览器,只要你拥有相应的程序语言包就能够进行程序分析,比如说目前最好的开源语言java.软件提供个用户快速的对源码进行导航和任何程序 ...
最新文章
- 如何快速将微信公众号留言嵌入到CSDN博文中?
- 中国python之父是谁-Python之父:谈Python
- vue项目打包之后原本好的样式变得不好了的原因分析
- 工业用微型计算机(11)-指令系统(8)
- java 程序实现对图片的压缩生成缩略图并可设定长宽、尺寸压缩率、图片质量
- python学什么版本2020年_2020年了居然还有人在学Python?学python有什么用?
- Linux启动U盘制作
- 使用MDScratchImageView实现刮奖效果
- 基于protues与keli下贪吃蛇的实现
- Matpower安装流程
- 设置Visual Studio代码折叠
- 软件测试工程师需要学什么?全网最全,测试工程师技能树,吐血整理
- 如何提高服务器网站访问速度,如何有效提升网站打开速度?
- TCP合法RST报文
- 云原生之 Ansible 篇(一)
- SQL语句中查找字符的位置
- 数据结构算法---八大排序
- **PAT_甲级_1057 Stack (30分) (C++)【字符串处理/栈的模拟/树状数组】
- 软件工程导论第六版 第五章 总体设计知识点总结
- webrtc QOS方法二.3(FEC冗余度配置)