Połączenie z bazą MySQL

0

Tworzę sobie połączenie z bazą MySQL wywołując poniższą metodę:

public boolean getConnection(String login, String password){
        try {
            Class.forName("org.gjt.mm.mysql.Driver");
          //jdbc:<subprotocol>:<subname>
            url = "jdbc:mysql://adres_ip:port/nazwa_bazy";
            this.login = login;
            this.password = password;
            this.connect = DriverManager.getConnection(url, login, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            connect = null;
            return false;
        } catch (SQLException e) {
            e.printStackTrace();
            connect = null;
            return false;
        }
        return true;
}

Pojawia się stacktrace:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

Last packet sent to the server was 0 ms ago.false

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2120)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:723)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at tools.DBConnector.openConnection(DBConnector.java:22)
at tools.DBConnector.main(DBConnector.java:38)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

Last packet sent to the server was 0 ms ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:335)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2043)
... 13 more
Caused by: java.net.NoRouteToHostException: No route to host
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:218)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
... 14 more

Aplikację nazwałem DBConnector.

Sterownik pobrałem stąd:
http://www.java2s.com/Code/Jar/MNOPQR/Downloadmysqlconnectorjava517binjar.htm

Podobno wersja tej bazy to 5.1.41, a sterownik jest do 5.1.7. Nie znalazłem jednak sterownika do 41, więc pobrałem nowszy. To może być problemem ? Bo kod chyba jest ok ?

0

Caused by: java.net.NoRouteToHostException: No route to host.
Sprawdź czy w ogóle pingujesz tego hosta.

0

url = "jdbc:mysql://adres_ip:port/nazwa_bazy";

czy tutaj aby na pewno łączysz się w odpowiedni sposób?

0

@remigio - to tylko przykładowy zapis
@giker - fakt, akurat jak wywołałem exceptiona pisząc post, połączenie z jakiegoś powodu urwało - nie zwróciłem uwagi - ale problem pojawiał się też wtedy, kiedy host był osiągalny. Zmieniłem sterownik, parę urli i dowiedziałem się, że ktoś mi podał złe dane. Wszystko razem zadziałało :).

Dzięki za odzew.

1 użytkowników online, w tym zalogowanych: 0, gości: 1