2016-12-11 19 views
0

javaを介してSQL DBに接続しようとしています。私はコードを実行すると、コンソールに印刷されます:データベースに接続...何も起こらず、私はプログラムを停止する必要があります。java経由でSQLに接続

package javasqltest; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.sql.Statement; 

public class JavaSQLTest { 

    static final String JDB_DRIVER = "com.mysql.jdbc.Driver"; 
    static final String DB_URL = "jdbc:mysql://localhost:1527/"; 

    static final String USER = "test"; 
    static final String PASS = "test"; 

    public static void main(String[] args) { 

     Connection conn = null; 
     Statement stmt = null; 

     try {   
      Class.forName("com.mysql.jdbc.Driver"); 

      System.out.println("Connecting to database..."); 
      conn = DriverManager.getConnection(DB_URL, USER, PASS); 

      System.out.println("Creating database..."); 
      stmt = conn.createStatement(); 

      String sql = "CREATE DATABASE STUDENTS"; 
      stmt.executeUpdate(sql); 
      System.out.println("Database created successfully..."); 
     } catch (SQLException se) {   
      se.printStackTrace(); 
     } catch (Exception e) {   
      e.printStackTrace(); 
     } finally {   
      try { 
       if (stmt != null) { 
        stmt.close(); 
       } 
      } catch (SQLException se2) { 
      } 
      try { 
       if (conn != null) { 
        conn.close(); 
       } 
      } catch (SQLException se) { 
       se.printStackTrace(); 
      } 
     } 
     System.out.println("Goodbye!"); 
    } 
} 

この問題を解決するためのヘルプ。

ありがとうございました。

LE:

私は3306にポートを変更した場合、これはコンソール出力です:

run: 
Connecting to database... 
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:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
Goodbye! 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117) 
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:355) 
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2461) 
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2498) 
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283) 
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822) 
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404) 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317) 
    at java.sql.DriverManager.getConnection(DriverManager.java:664) 
    at java.sql.DriverManager.getConnection(DriverManager.java:247) 
    at javasqltest.JavaSQLTest.main(JavaSQLTest.java:27) 
Caused by: java.net.ConnectException: Connection refused: connect 
    at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:589) 
    at java.net.Socket.connect(Socket.java:538) 
    at java.net.Socket.<init>(Socket.java:434) 
    at java.net.Socket.<init>(Socket.java:244) 
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:259) 
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:305) 
    ... 15 more 
BUILD SUCCESSFUL (total time: 2 seconds) 
+0

このようなデータベース全体を作成するのは慣例ではありません。通常は外部から管理ツールを使用して行います。プログラムはしばしばデータベース内の*テーブル*を操作します。 – chrylis

答えて

1

MySQLのJDBC接続URLは通常、次のようなものになります。

jdbc:mysql://localhost:3306/dbname 

どこdbnameをあなたのMySQLデータベースの名前であり、3306は、MySQLがリッスンしているデフォルトのポートです。あなたのMySQLが実際にポート1527をリッスンしている場合は、代わりにそれを使用することができます。あなたは決してデータベースの名前を指定しませんでした。これだけでは接続が失敗するでしょう。

+0

こんにちはTimさんとありがとう、私はNetbeans IDEを介してDBを作成し、それが現れたデフォルトポートでした。たとえ私が/ localhost:1527/sqltestへのURLを変更しても結果は同じです。私はtutorialspointのチュートリアルに従ったが、なぜエラーなしでそこで停止するのか分からない。 –

+0

MySQLが実際に使用しているポートを確認してください。 –

+0

ポートを3306に切り替えると、エラーが発生します。com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信リンクの失敗サーバーに最後に送信されたパケットは、0ミリ秒前です。ドライバはサーバからパケットを受信して​​いません。だからポート1527は大丈夫だと思う。 MySQLが使用するポートを調べるにはどうすればよいですか? –

関連する問題