gpt4 book ai didi

jdbc - 通过 JDBC 连接远程 db2 数据库失败

转载 作者:行者123 更新时间:2023-12-01 18:22:48 28 4
gpt4 key购买 nike

我是 db2 新手。我想问是否可以通过我的java应用程序连接到远程db2服务器上的db2数据库?仅具有类型 4 的 jdbc 驱动程序?

我在构建路径上有 db2jcc4 驱动程序。

当我尝试这个简单的代码

 public static void main(String[] args) {
Class.forName("com.ibm.db2.jcc.DB2Driver");
System.out.println("Driver loaded");

try {
Connection dbConn = DriverManager.getConnection("jdbc:db2://192.168.0.103:50000/ABC", "****", "*****");
} catch (SQLException e) {
e.printStackTrace();
}

}

连接失败并出现此异常。我无法追踪到底发生了什么?

 com.ibm.db2.jcc.am.SqlException: [jcc][t4][10262][11223][4.19.26] Unexpected Throwable caught: null. ERRORCODE=-4228, SQLSTATE=null
at com.ibm.db2.jcc.am.kd.a(Unknown Source)
at com.ibm.db2.jcc.am.kd.a(Unknown Source)
at com.ibm.db2.jcc.am.kd.a(Unknown Source)
at com.ibm.db2.jcc.t4.b.b(Unknown Source)
at com.ibm.db2.jcc.t4.b.a(Unknown Source)
at com.ibm.db2.jcc.t4.b.a(Unknown Source)
at com.ibm.db2.jcc.t4.b.a(Unknown Source)
at com.ibm.db2.jcc.t4.b.<init>(Unknown Source)
at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(Unknown Source)
at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(Unknown Source)
at com.ibm.db2.jcc.DB2Driver.connect(Unknown Source)
at com.ibm.db2.jcc.DB2Driver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at com.connect.db2.ConnectToServer.main(ConnectToServer.java:22)


Caused by: java.lang.NullPointerException
at com.ibm.db2.jcc.am.Connection.completeSqlca(Unknown Source)
at com.ibm.db2.jcc.t4.z.q(Unknown Source)
at com.ibm.db2.jcc.t4.z.p(Unknown Source)
at com.ibm.db2.jcc.t4.z.l(Unknown Source)
at com.ibm.db2.jcc.t4.z.d(Unknown Source)
at com.ibm.db2.jcc.t4.b.k(Unknown Source)
at com.ibm.db2.jcc.t4.b.b(Unknown Source)
at com.ibm.db2.jcc.t4.b.a(Unknown Source)
... 12 more

getconnection 之后的 db2diag.log 是:

 PID     : 5110                 TID : 140245920114432 PROC : db2sysc 0
INSTANCE: sachindb NODE : 000 DB : ABC
APPHDL : 0-46 APPID: 192.168.0.101.64054.151230182945
AUTHID : SACHINDB HOSTNAME: Sachin
EDUID : 22 EDUNAME: db2agent (ABC) 0
FUNCTION: DB2 UDB, base sys utilities, sqleIsDatabaseDirectoryConnectable, probe:6835
MESSAGE : ZRC=0x8005006D=-2147155859=SQLE_CA_BUILT
"SQLCA has been built and saved in component specific control block."
DATA #1 : SQLCA, PD_DB2_TYPE_SQLCA, 136 bytes
sqlcaid : SQLCA sqlcabc: 136 sqlcode: -1035 sqlerrml: 0
sqlerrmc:
sqlerrp : SQLE534
sqlerrd : (1) 0x00000000 (2) 0x00000000 (3) 0x00000000
(4) 0x00000000 (5) 0x00000000 (6) 0x00000000
sqlwarn : (1) (2) (3) (4) (5) (6)
(7) (8) (9) (10) (11)
sqlstate:

最佳答案

您在 Java 7 中使用 AES 加密机制吗?如果是这样,我通过 Googull 找到了这个解决方案 IBM.com

否则,请尝试直接创建 DB2SimpleDataSource 对象。

private DB2SimpleDataSource db2;
private void configureDataSource() {

db2 = new DB2SimpleDataSource();
db2.setServerName("192.168.0.103");
db2.setPortNumber(50000);
db2.setDatabaseName("ABC");
db2.setUser("****");
db2.setPassword("*****");
db2.setReadOnly(true);
}

然后像这样连接 Connection c = db2.getConnection() 或这样 Connection c = db2.getConnection("****", "*****")

另外...参见this similar question

关于jdbc - 通过 JDBC 连接远程 db2 数据库失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34533041/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com