连接到MySQL时出现“通信链路故障”

时间:2013-12-14 02:22:25

标签: java mysql database jdbc

我正在构建一个需要远程数据库连接的Java应用程序。我已经使用Eclipse为mysql导入了JDBC驱动程序,据我所知,所有内容都正确输入。服务器主机已启用我的IP进行更改,并且已确认用户名和密码。

public class Shop {
Connection connection = null;

String driverName = "com.mysql.jdbc.Driver";
String username = "username";
String password = "password";
String hostURL = "jdbc:mysql://IPAddress:Port/databaseName";


public Shop() {};

public boolean connectDB() {


    try {
        Class.forName(driverName);

        connection =  DriverManager.getConnection(hostURL,username,password);
    } catch (ClassNotFoundException e) {  
        System.out.println("ClassNotFoundException : "+e.getMessage()); 
        return false;
    } catch (SQLException e) {
        System.out.println(e.getErrorCode());
        System.out.println(e.getMessage());
        return false;
    }
    return true;


}
public static void createAndShowGUI() {
    JFrame frame = new JFrame("Store");

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setPreferredSize(new Dimension(800,600));
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
}

public static void main(String[] args) {
    Shop s = new Shop();
    System.out.println("Connection : " + s.connectDB());

    javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });




}
}

1 个答案:

答案 0 :(得分:0)

您是否已核实IPAddressPortdatabaseName?如果是这样,可能有防火墙。您可以使用类似

之类的东西设置ssh端口转发
ssh -L LocalPort:IPAddress:RemotePort username@IPAddress

然后你应该能够在localhost:localport连接。在Windows上,您可以使用cygwin(如上所述)或putty(通过简单的GUI)完全相同的方式。我确定还有其他选择(比如VPN)。