2014-12-30 37 views
-1

我想在java文件中使用jdbc連接數據庫。它根本不連接,並不斷地給我錯誤「出錯了」;我想這是因爲端口號,因爲所有其他數據,如用戶名,密碼和其他代碼似乎是正確的。如何檢查mysql連接的默認端口號?連接不工作! jdbc連接

我想檢查默認端口號,以便我可以正確地嘗試它。我曾嘗試使用這三個8080,80和3306,但它顯示我錯誤。

這裏端口8080用於HTTP服務器,3306應該是默認的研究和80隨機。

try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     System.out.println("Driver found"); 
    } catch (ClassNotFoundException e) { 
     System.out.println("Driver not found"); 
    } 

    String url="jdbc:mysql://localhost:8080 or 80 or 3306 or without port number/test"; 
    String user="user"; 
    String password=""; 

    Connection con=null; 

    try { 
     con=DriverManager.getConnection(url, user, password); 
    System.out.println("Success"); 
    } catch (SQLException e){ 
     e.printStackTrace(); 
    } 
} 

錯誤在下面給出時使用String url =「jdbc:mysql:// localhost:3306/test」;

Driver found 
    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 

    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not  received any packets from the server. 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:377) 
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1036) 
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:338) 
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2232) 
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265) 
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064) 
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790) 
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:377) 
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395) 
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325) 
at java.sql.DriverManager.getConnection(DriverManager.java:582) 
at java.sql.DriverManager.getConnection(DriverManager.java:185) 
at com.town.connect.Dbconnection.main(Dbconnection.java:26) 
    Caused by: java.net.ConnectException: Connection refused 
at java.net.PlainSocketImpl.socketConnect(Native Method) 
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:382) 
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:241) 
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:228) 
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:431) 
at java.net.Socket.connect(Socket.java:527) 
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:213) 
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:297) 
... 15 more 
+1

端口8080是Tomcat端口。 MySQL將不可能使用該端口。通常的MySQL端口是3306,如果你完全從URL中忽略它,你將得到這個結果。注意Class.forName()行在七年內不再需要。 – EJP

+0

使用'3306'端口時發生的錯誤是什麼? –

+0

My TomcT端口是8080,但是PHPmyadmin端口是3306,那麼哪一個應該用於連接? –

回答

1

您可以通過

mysql> show variables; 
+0

非常感謝,很容易。我發現它一直在使用3306端口號,但是我嘗試過使用這個端口號,但是它仍然給我顯示錯誤。任何想法,我犯了錯誤? –

+0

@SandeshRana你使用的是Java 7嗎? – sol4me

+0

@SandeshRana它還在向你展示***什麼***錯誤?您尚未在您的問題或評論中提供錯誤消息。當然,除了你自己的愚蠢的錯誤信息。該例外的消息是必需的。 – EJP

0
DriverManager.getConnection("jdbc:mysql://"+dbaddress+"/"+dbname+"?user=" + username + "&password=" + password) 

訪問這些設置,這種說法可以幫助你。無需定義任何其他端口。根據你的mysql配置只需定義下面的變量。

  • dbaddress
  • DBNAME
  • 用戶名
  • 密碼

如果這不作品你能張貼堆棧跟蹤或對您的錯誤截圖?

+0

目前尚不清楚他不需要定義一個端口。問題中沒有足夠的信息來確定。 – EJP

+0

我同意你的觀點@EJP。但它值得一試。如果這不起作用,我要求提供截圖或堆棧跟蹤。爲了解決這個問題,需要更多的信息。 –

0

如果你想知道的端口號,你可以使用下面的命令

SHOW VARIABLES WHERE變量名=「端口」;