2016-05-11 61 views
3

我試圖在java中連接DB2數據庫,但它拋出錯誤,我找不到那是什麼問題。我添加了db2jcc.jar並在這裏顯示我的完整數據庫連接代碼。如何使用java連接DB2數據庫連接?

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="[email protected]"; 

     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 

希望有人幫助我找出解決方案。由於

+0

你嘗試與db2jcc4.jar? –

+1

錯誤消息是說您沒有在端口50000上的本地主機上運行的(DB2)服務器。也許您需要修改連接URL? – Lolo

+0

@NicolasFilotto你分享的鏈接無法正常工作我猜,也沒有我沒有嘗試使用db2jcc讓我試試這個。 –

回答

0

原因

一個可能的原因這個問題是TCP/IP未正確DB2數據庫服務器上啓用。

解決問題

使用從DB2命令窗口中db2set DB2COMM命令啓動TCP/IP連接:

db2set DB2COMM=protocol_names 

例如,設置數據庫管理器啓動連接經理在TCP/IP通信協議中輸入以下命令:

db2set DB2COMM=tcpip 
db2stop 
db2start 

來源:https://www-304.ibm.com/support/docview.wss?uid=swg21403644

+0

對不起,我不清楚尼古拉斯自從剛剛對Db2的事情。你能用代碼解釋我嗎? –

+0

我試過使用db2jcc4.jar,即使得到相同的錯誤Nicolas –

+0

所以我想在DB2窗口中執行這些命令是否正確。 –

1

實際上端口50000沒有打開,這是我得到錯誤後,該端口改爲51020它工作正常,它也連接數據庫的原因。

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

感謝