2016-12-11 100 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

你好蒂姆,谢谢你,我通过Netbeans IDE创建了数据库,这是出现的默认端口。即使我修改URL到/ localhost:1527/sqltest的结果是一样的。我按照教程点的教程,但我不明白为什么它停在那里没有错误。 –

+0

找出MySQL实际使用的端口。 –

+0

如果我将端口切换到3306,我得到一个错误:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败最后一个成功发送到服务器的数据包是0毫秒前。驱动程序尚未收到来自服务器的任何数据包。所以我认为端口1527是可以的。我怎样才能找到MySQL使用的端口? –