2016-12-11 6 views
0

Я пытаюсь подключиться к SQL DB через java. Когда я запускаю код, в консоли печатается: Подключение к базе данных ... тогда ничего не происходит, и я должен остановить программу.Подключиться к sql через java

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

соединение URL JDBC для MySQL обычно выглядит примерно так:

jdbc:mysql://localhost:3306/dbname 

где dbname это имя вашей базы данных MySQL, а 3306 - это порт по умолчанию, который слушает MySQL. Если ваш MySQL действительно прослушивает порт 1527, вы можете использовать его вместо этого. Вы никогда не указывали имя базы данных, и это само по себе приведет к сбою соединения.

+0

Привет, Тим, спасибо, я создал БД через NetBeans IDE, и это был порт по умолчанию, который появился. Даже если я изменяю URL-адрес/localhost: 1527/sqltest, результат будет таким же. Я следил за учебником по учебнику, но я не понимаю, почему он останавливается там без ошибок. –

+0

Узнайте, какой порт MySQL фактически использует. –

+0

Если я переключу порт на 3306, я получаю сообщение об ошибке: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Ошибка связи связи Последний пакет, успешно отправленный на сервер, был 0 миллисекунд назад. Драйвер не получил никаких пакетов с сервера. поэтому я думаю, что порт 1527 в порядке. Как я могу узнать порт, используемый MySQL? –