2014-11-14 73 views
0

我試圖顯示數據表格empleados表。該表位於Ubuntu虛擬機中的ucol數據庫內。我已經配置了主機專用網絡,它可以同時使用兩種方式。但是,當我運行它,它捕捉到一個例外試圖從虛擬機連接到mysql數據庫(Java)

static final String controlador = "com.mysql.jdbc.Driver"; 
static final String direccion = "jdbc:mysql://192.168.1.73:3306/ucol"; 
static final String usuario = "user"; 
static final String clave = "pass"; 

public static void main(String[] args) { 
    Connection conexion = null; 
    Statement consulta = null; 
    String sql; 

    int id; 
    String nombre; 
    String apellidos; 
    double salarios; 

    try { 
     System.out.println("Connecting..."); 
     Class.forName(controlador); 
     conexion = DriverManager.getConnection(direccion, usuario, clave); 
     consulta = conexion.createStatement(); 
     System.out.println("Connection done."); 


     sql = "SELECT id, nombre, apellidos, salarios FROM empleados;"; 
     ResultSet resultado = consulta.executeQuery(sql); 

     while(resultado.next()) { 
      id = resultado.getInt("id"); 
      nombre = resultado.getString("nombre"); 
      apellidos = resultado.getString("apellidos"); 
      salarios = resultado.getInt("salarios"); 

      System.out.println("\nID: " + id 
        + "\tNombre: " + nombre 
        + "\tApellido: " + apellidos 
        + "\tSalarios: " + salarios); 
     } 

     resultado.close(); 
     consulta.close(); 
     conexion.close(); 
    } 
    catch(Exception e) { 
     System.err.println("Error at showing: " + e.toString()); 
    } 
    finally { 
     try { 
      if(consulta != null) 
       consulta.close(); 
      if(conexion != null) 
       conexion.close(); 
     } 
     catch(Exception e) { 
      System.out.println("Error at closing: " + e.toString()); 
     } 
    } 
} 

這裏的輸出:

Connecting 
Error at showing: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.ConnectException 
MESSAGE: Connection timed out: connect 

STACKTRACE: 

java.net.ConnectException: Connection timed out: connect 
    at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:579) 
    at java.net.Socket.connect(Socket.java:528) 
    at java.net.Socket.<init>(Socket.java:425) 
    at java.net.Socket.<init>(Socket.java:241) 
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256) 
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271) 
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771) 
    at com.mysql.jdbc.Connection.<init>(Connection.java:1555) 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) 
    at java.sql.DriverManager.getConnection(DriverManager.java:571) 
    at java.sql.DriverManager.getConnection(DriverManager.java:215) 
    at Consulta.main(Consulta.java:37) 


** END NESTED EXCEPTION ** 



Last packet sent to the server was 2 ms ago. 

下面是它是如何顯示在虛擬機上運行ifconfig:

eth0  ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     Direc. inet: 192.168.1.73 Difus.192.168.1.55 Másc.: 255.255.255.0 
     ~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     ~~~~~~~~~~~~~~~~~~~~~~~~~~ 

我失去的東西?

+0

首先,將MySQL端口添加到連接字符串,並檢查它是否在虛擬機上打開。標準之一是3306. 'direccion =「jdbc:mysql://192.168.1.73:3306/ucol」' – mwilczynski 2014-11-14 21:06:44

+0

完成。拋出同樣的異常。 – nihCC 2014-11-14 23:14:33

+0

你可以通過終端登錄到mysql並顯示該特定的表? – mattias 2014-11-14 23:28:11

回答

0

我發現問題,我停止了在虛擬機上的ufw服務。

sudo service ufw stop