使用JDBC在java中连接DB2时出现异常

时间:2013-06-13 08:16:02

标签: java jdbc db2

我正在尝试使用Java连接到db2数据库。在驱动程序和连接字符串下面以及我给出的驱动程序详细信息

Class.forName("COM.ibm.db2.jdbc.net.DB2Driver");
String url="jdbc:db2://hostname:portnumber/databasename";
sourceConnection=DriverManager.getConnection(url,"username","password");

但我得到以下异常

"COM.ibm.db2.jdbc.DB2Exception: [IBM][JDBC Driver] CLI0615E  Error receiving from socket, server is not responding. SQLSTATE=08S01"

我也尝试将连接字符串更改为     String url =“jdbc:db2:hostname:portnumber / databasename”;

在尝试获取Connection时,仍然会产生相同的异常。

我也尝试使用JDBC app驱动程序

以下选项
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");     
DB2DataSource db2ds = new DB2DataSource();
db2ds.setServerName("hostname");
db2ds.setPortNumber(portnumber);
db2ds.setDatabaseName("databasename");
db2ds.setUser("username");
db2ds.setPassword("password");
sourceConnection=db2ds.getConnection();

对于上述两个连接,我使用了jar“db2java.jar”

我尝试过使用JCC驱动程序:

Class.forName("com.ibm.db2.jcc.DB2Driver");
String url="jdbc:db2://hostname:portnumber/databasename";
sourceConnection=DriverManager.getConnection(url,"username","password");

对于这种连接,我添加了以下罐子 1)的db2jcc.jar 2)为db2jcc_license_cu.jar

这次我得到以下错误,

"com.ibm.db2.jcc.am.go: [jcc][t4][201][11237][3.57.82] Connection authorization failure occurred.  
Reason: Security mechanism not supported. ERRORCODE=-4214, SQLSTATE=28000"

我尝试使用“Quest for DB2”工具连接到相同的db2源,并且连接成功。

我在代码中遗漏了什么,是DB2驱动程序还是连接字符串的问题?

有人可以指导我。

提前致谢。

2 个答案:

答案 0 :(得分:0)

<强>原因:

如果正在运行InfoSphere Optim Performance Manager的DB2®实例将身份验证配置参数设置为DATA_ENCRYPT,则无法登录Web控制台。

解决问题:

执行以下步骤:

  1. 在运行Optim Performance Manager的DB2实例上,通过发出以下命令将身份验证配置参数设置为SERVER:

    db2 update dbm cfg using authentication server

  2. 重新启动DB2实例和InfoSphere Optim Performance Manager。

  3. 有关详细信息,请访问here

答案 1 :(得分:0)

你的前两次尝试不应该起作用。您使用的是JCC驱动程序URL格式,因此对于“net”或“app”驱动程序无效,无论如何都不推荐使用它们。

使用JCC驱动程序(com.ibm.db2.jcc.DB2Driver)和URL格式“jdbc:db2:// hostname:portnumber / databasename”,并查看this technote以获取“安全性”的解决方案机制不支持“问题。简而言之,您需要使用受支持的JDK。