如何使用java连接DB2数据库连接?

如何使用java连接DB2数据库连接?,java,db2,Java,Db2,我试图用java连接DB2数据库,但出现了一个错误,我找不到是什么问题。我添加了db2jcc.jar,这里我展示了完整的数据库连接代码 public class ConnectionExample { public static void main(String[] args) { String jdbcClassName="com.ibm.db2.jcc.DB2Driver"; String url="jdbc:db2://localhost:5000

我试图用java连接DB2数据库,但出现了一个错误,我找不到是什么问题。我添加了db2jcc.jar,这里我展示了完整的数据库连接代码

public class ConnectionExample {

    public static void main(String[] args) {
        String jdbcClassName="com.ibm.db2.jcc.DB2Driver";
        String url="jdbc:db2://localhost:50000/TestDb";
        String user="user";
        String password="pass@123";

        Connection connection = null;
        try {
            //Load class into memory
            Class.forName(jdbcClassName);
            //Establish connection
            connection = DriverManager.getConnection(url, user, password);

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            if(connection!=null){
                System.out.println("Connected successfully.");
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

    }

}
我试图用上面的代码连接DB2数据库,但它抛出了错误

com.ibm.db2.jcc.am.DisconnectNonTransientConnectionException: [jcc][t4][2043][11550][3.63.123] Exception java.net.ConnectException: Error opening socket to server localhost/127.0.0.1 on port 50,000 with message: Connection refused: connect. ERRORCODE=-4499, SQLSTATE=08001
    at com.ibm.db2.jcc.am.fd.a(fd.java:321)
    at com.ibm.db2.jcc.am.fd.a(fd.java:340)
    at com.ibm.db2.jcc.t4.xb.a(xb.java:433)
    at com.ibm.db2.jcc.t4.xb.<init>(xb.java:90)
    at com.ibm.db2.jcc.t4.a.z(a.java:347)
    at com.ibm.db2.jcc.t4.b.a(b.java:1974)
    at com.ibm.db2.jcc.am.ib.a(ib.java:691)
    at com.ibm.db2.jcc.am.ib.<init>(ib.java:644)
    at com.ibm.db2.jcc.t4.b.<init>(b.java:330)
    at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:231)
    at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:197)
    at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:472)
    at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:113)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at ConnectionExample.main(ConnectionExample.java:18)
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at com.ibm.db2.jcc.t4.x.run(x.java:38)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.ibm.db2.jcc.t4.xb.a(xb.java:419)
    ... 13 more
com.ibm.db2.jcc.am.DisconnectNonTransientConnectionException:[jcc][t4][2043][11550][3.63.123]异常java.net.ConnectException:打开端口50000上服务器localhost/127.0.0.1的套接字时出错,消息为:连接被拒绝:连接。ERRORCODE=-4499,SQLSTATE=08001
位于com.ibm.db2.jcc.am.fd.a(fd.java:321)
com.ibm.db2.jcc.am.fd.a(fd.java:340)
com.ibm.db2.jcc.t4.xb.a(xb.java:433)
com.ibm.db2.jcc.t4.xb.(xb.java:90)
位于com.ibm.db2.jcc.t4.a.z(a.java:347)
com.ibm.db2.jcc.t4.b.a(b.java:1974)
com.ibm.db2.jcc.am.ib.a(ib.java:691)
com.ibm.db2.jcc.am.ib.(ib.java:644)
com.ibm.db2.jcc.t4.b.(b.java:330)
位于com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:231)
位于com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:197)
com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:472)
com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:113)
位于java.sql.DriverManager.getConnection(未知源)
位于java.sql.DriverManager.getConnection(未知源)
位于ConnectionExample.main(ConnectionExample.java:18)
原因:java.net.ConnectException:连接被拒绝:连接
位于java.net.DualStackPlainSocketImpl.connect0(本机方法)
位于java.net.DualStackPlainSocketImpl.socketConnect(未知源)
位于java.net.AbstractPlainSocketImpl.doConnect(未知源)
位于java.net.AbstractPlainSocketImpl.connectToAddress(未知源)
位于java.net.AbstractPlainSocketImpl.connect(未知源)
位于java.net.PlainSocketImpl.connect(未知源)
位于java.net.socksocketimpl.connect(未知源)
位于java.net.Socket.connect(未知源)
com.ibm.db2.jcc.t4.x.run(x.java:38)
位于java.security.AccessController.doPrivileged(本机方法)
com.ibm.db2.jcc.t4.xb.a(xb.java:419)
... 还有13个
希望有人能帮我找到解决办法。谢谢,因为

此问题的一个可能原因是DB2数据库服务器上没有正确启用TCP/IP

解决问题

使用DB2命令窗口中的
db2set DB2COMM
命令启动TCP/IP连接:

db2set DB2COMM=protocol_names
例如,要将数据库管理器设置为启动TCP/IP通信协议的连接管理器,请输入以下命令:

db2set DB2COMM=tcpip
db2stop
db2start

来源:

实际上端口50000没有打开,这就是我在将该端口更改为51020后出现错误的原因。它工作正常,并且与数据库连接

String url="jdbc:db2://localhost:51020/TestDb";

谢谢

您尝试使用db2jcc4.jar了吗?错误消息是您没有在端口50000上的本地主机上运行(DB2)服务器。也许你需要修改你的连接URL?@NicolasFilotto你共享的链接不起作用,我想,不,我没有尝试使用db2jcc,让我也尝试一下。对不起,我不清楚Nicolas,因为我对Db2不熟悉。你能用代码解释一下吗?我尝试过使用db2jcc4.jar,尽管我遇到了相同的错误NicolasSo我想在DB2窗口中执行这些命令,对吗?Nicolas我检查了端口是51020,更改端口后代码正常工作。