java报表软件FineReport数据库连接疑难问题解决方案汇总

来源:互联网 发布:自学java好难过 编辑:程序博客网 时间:2024/05/19 22:06

用户在使用FineReport报表时,客户端连接SQLSever、Oracle、Informix时常常会出现一些错误,笔者整理了一些疑难问题的解决方案。

1、 SQLServer数据库连接失败常见解决方案

客户端连接SQLServer(2000、2005等)常常会出现如下错误:com.microsoft.sqlserver.jdbc.SQLServerException: 到主机的TCP/IP 连接失败。 

该错误可能由如下几个方面导致:

1.1  sp4安装包有没有装 

这个主要是sqlserver2000,其他版本一般没有这个问题。sqlsp4补丁就是Microsoft SQL Server 2000 Service Pack 4 大多数版本为简体中文版。 

SP4 包括用于以下 SQL Server 2000 组件的程序包: 

Database 组件(下载1:SQL2000-KB884525-SP4-x86.EXE)更新 SQL Server 2000 的 32 位 Database 组件,包括数据库引擎、复制、客户端连接组件及工具。 

Analysis Services 组件(下载2:SQL2000.AS-KB884525-SP4-x86.EXE)更新 SQL Server 2000 的 32 位 Analysis Services。 

SQL Server 2000 Desktop Engine (MSDE) 组件(下载3:SQL2000.MSDE-KB884525-SP4-x86.EXE)对于 SQL Server 2000 的 32 位 MSDE 组件:

安装新的 MSDE 实例 

升级现有 MSDE 实例 

更新使用合并模块的应用程序。 

打sp4后一般会出现登陆连接问题,看看SQL的服务有没有运行,没运行去我的电脑>管理>服务里面把MSSQLSERVER服务登录的用户名和密码改正确;有运行,进企业管理器,改SQL的登录方式为混合模式,设置sa密码,重新设置一次。 sqlserver 2000 sp3由于有bug,很多服务器打不了补丁,说sa连接失败,所以直接安装sp4升级补丁,升级之前建议先备份数据库。 

1.2  数据库端的TCP/IP有没有启动 

SQLServer2005默认情况下是禁用了TCP/IP连接,若连接SQLServer数据库出现TCP/IP连接失败,请确认数据库服务器的TCP/IP是否启用了。 

SQLServer2000数据库启用方法:可以到系统服务里手动开启一下,下图所示位置的TCP/IP:

SQLServer2005数据库启用方法:在Microsoft SQL Server 2005\配置工具\目录下的SQL Server Configuration Manager界面设置,如下图:

1.3  服务器网络实用工具中TCP/IP协议有没有打开 

如下图所示,在SQLServer2000中有个服务器网络实用工具需要如下设置,如果不打开也会报TCP/IP的错误,这也是一个要注意的地方,检错的时候不可遗漏。

对于SQLServer2005,可以在配置工具\SQL Server 外围应用配置器,在“SQL Server 2005外围应用配置器”页,单击“服务和连接的外围应用配置器”,然后单击展开“数据库引擎”,选中“远程连接”,在右边选中“本地连接和远程连接”,再选择要使用的协议:

1.4  防火墙有没有阻止 

控制面板中的Windows防火墙阻止了连接,导致TCP/IP连接失败;本地的防火墙添加一下SQLServer数据库的端口即可:

注:以上是四种常见的解决方案,出现了TCP/IP连接失败的情况,可以按照这四个方法尝试解决。

2、SID不正确导致Oracle连不上

2.1连接ORACLE具体报错

Cannot create PoolableConnectionFactory (Listener refused the connection with the following error:ORA-12505, TNS:listener does not currently know of SID given in connect descrip

出现如上报错的主要原因是由于监听器不识别java应用程序中定义的数据库名称导致的,需要修改设计器中数据连接所定义的数据库名。ORACLE是通过外界提供的服务名来判断是否建立连接的,所以要保证设计器端跟数据库端的数据库名称匹配。 

SID是一个数据库的唯一标识符!是你在建立一个数据库时系统自动赋予的一个初始ID,虽说他和数据库名(DB_NAME)都是一个数据库的唯一标识符,但是在作用上就有不小区别。SID主要用于在一些DBA操作以及与操作系统交互,从操作系统的角度访问实例名,必须通过ORACLE_SID,且它在注册表中也是存在的.而数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的。而SERVICE_NAME指的网络服务名,它是可以由自己意愿随意设置的,相当于为某个数据库实例取个别名方便自己记忆和访问。 

如下图所示的红色边框中就是数据库的SID,如果这边的名称跟数据库中的不统一,就会报这样的错误。


2.2报错解决方案

ORACLE数据库的安装目录中通常包含这2个文件:tnsname.ora跟listener.ora。区分好这2个文件就能处理好这个报错所带来的问题。Tnsname.ora是客户端的配置文件,listener.org是监听程序的配置文件。在tnsname.org里面可以找到对应的数据库名(下图小红框中对应的就是orcl10g):

ORACLE提供了比较形象的图形界面:NET MANAGER,打开该界面,如下图所示,红框部分就是对应的

查看完毕之后就可以对设计器器中进行更正,是否与该名称统一。

3、Informix数据库连接 

对于Informix数据库,定义数据连接处进行如下配置: 

数据库:Others 

驱动器:com.informix.jdbc.IfxDriver 

url:jdbc:informix-sql://localhost:port/mydatabase:INFORMIXSERVER=mydatabase

用户名:username 

密码:password 

说明: 

1. 因为没有内置Informix的jar包,所以需要先下载相应的JDBC驱动包放到lib下。 

2. 选择了数据库类型是Others之后,默认会带出来ODBC的驱动写法。驱动器一定要改。 

3. Informix在安装的时候需要定义一个用户名和密码,和Oracle的安装是类似的。所以定义连接的时候,用户名密码一定不是空的。如果有用户反映说没有用户名密码,也必须要创建一个,否则连接不成功。