+12 votes
2 views
in Python by (750 points)
edited by

I want my database to communicate with my java programs

Can anyone provide me with a sample program using JDBC?

I’m getting an error while doing the same

Exception in thread "main" 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: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:409)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1122)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2260)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:787)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
    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:409)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:357)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:207)
    at SqlTest.main(SqlTest.java:22)
Caused by: 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: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:409)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1122)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2181)
    ... 12 more
Caused by: java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
    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:256)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:293)
    ... 13 more

Contents of my text file are given as follows:

    import com.mysql.jdbc.*;

    import java.sql.connectionA;

    import java.sql.DriverManagerB;

    import java.sql.PreparedStatementC;

    import java.sql.ResultSetD;

    import java.sql.SQLExceptionE;

    import java.sql.StatementF;

    public class Test {

       public static void main(Stringxyz [] args) throws Exception {

           // Class.forName( "com.mysql.jdbc.DriverWXY" ); // do this in init

           // // edit the jdbc url

           connectionA conn = DriverManager.getConnection(

               "jdbc:mysql://localhost:3306/projects?user=usera&password=12345");

           // StatementF F = conn.createStatement();

           // ResultSetD D = st.executeQuery( "select * from table" );


           System.out.println("Connected or not?");


       }

Contents of the test file:

import com.mysql.jdbc.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SqlTest {

    public static void main(String [] args) throws Exception {
        // Class.forName( "com.mysql.jdbc.Driver" ); // do this in init
        // // edit the jdbc url
        Connection conn = DriverManager.getConnection(
            "jdbc:mysql://localhost:3306/projects?user=user1&password=123");
        // Statement st = conn.createStatement();
        // ResultSet rs = st.executeQuery( "select * from table" );

        System.out.println("Connected?");
    }
}
 

2 Answers

+15 votes
by (10.6k points)
  • Your exception seems to indicate that your MySQL server is not available.

         Exception in thread “main” com.mysql.exceptions.jdbc4.

         CommunicationsException:

         Communication link failure.                                                                                             The last packet sent successfully to the server was 0 milliseconds ago.                               No packet has been received by the driver from the server.   

  • Now, trying from the terminal:

Mysql -u username -p

  • You will be asked for the password associated with the username. Does the MySQL client connect after providing the correct password?
  • You might have to start MySQL from the preferences. If not, you can also set it to run at the startup.
+4 votes
by (31.4k points)
edited by

The issue that you are facing can means that the DB isn't reachable at all. This problem can occur due to any reason may be IP address or hostname in JDBC URL is wrong, or the hostname in JDBC URL is not recognized by local DNS server, or Port number may be missing, or DB server is down. There can be many reasons, so I would suggest you go through your approach once again and keep a check on everything.

I also got this error once because I didn't start my server before running this program.

I ran my program without starting the MySQL server.

So, I did cross-checking and after starting the MySQL server, everything was fine.

You can also try another approach where you can do replacement of Localhost to your IP address:

Connection con = DriverManager.getConnection(

 "jdbc:mysql://localhost:3306/DBname", "root", "root");

 Connection con = DriverManager.getConnection(

 "jdbc:mysql://192.100.0.000:3306/DBname", "root", "root");

You can use the following video tutorials to clear all your doubts:-

I hope it solves your problem.

Related questions

+1 vote
4 answers
+3 votes
2 answers
0 votes
1 answer
0 votes
1 answer
Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...