开发者

Java - JDBC connection

I am getting this error:

       FOR REAL Looking for 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(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1118)
    at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:675)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1078)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2312)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at test.init(test.java:38)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2502)
    at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:599)
    ... 17 more
java.lang.NullPointerException
    at test.init(test.java:69)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.NullPointerException

when I am trying to connect to my MySQL online.

Here's my code:

(yes, it's signed)

  //package mysqltest;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.applet.Applet;
    import java.awt.TextArea.*;
    import java.sql.*;
    import java.util.*;
    import javax.swing.plaf.*;
    import javax.swing.plaf.basic.*;
    import java.net.*;
    import java.applet.*;

    public class test extends JApplet
    {
        public JTextArea c;
        public void init()
        {
            c = new JTextArea();
            add(c);
            c.append("xxxLooking for database...");
            Connection conn = null;
            Properties props = new Properties();
            String url = "jdbc:mysql://localhost:3306/";
            String dbName = "mystik";
            String driver = "com.mysql.jdbc.Driver";
            String userName = "root";
            String password = "";
            String loggedusername = getParameter("name");
            boolean online = false;
            try
            {
                Class.forName(driver).newInstance();
                online = true;
                if (online)
                {
                    // if user loads applet online 
conn = DriverManager.getConnection("jdbc:mysql://epic.0sites.net:208/*********?user=*******&password=**********");
                }
                else
                {
                    // for localhost - testing purposes props.put("user", "root");
                    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mystik", props);
                }
                c.append("\nConnected to the database");
                c.append("\nGetting stats for: " + loggedusername);
                PreparedStatement statement = conn.prepareStatement( "select * from `user` where `username` = '"+loggedusername+"'");
                ResultSet result = statement.executeQuery();
                // just a du开发者_高级运维mb mysql statement! while(result.next())
                {
                    c.append("\nUsername: "+result.getString(2)+ "\nLevel: "+result.getString(6)+"\nEXP: "+result.getString(8)+"\n");
                }
                PreparedStatement updateEXP = conn.prepareStatement( "update`user` set `exp` = '666' where `username` = '"+loggedusername+"'");
                updateEXP.executeUpdate();
                ResultSet xresult = statement.executeQuery();
                while(xresult.next())
                {
                    c.append("\nUsername: "+xresult.getString(2)+ "\nLevel: "+xresult.getString(6)+"\nEXP: "+xresult.getString(8)+"\n");
                }
                conn.close();
                c.append("\nDisconnected from database");
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    }

What am I doing wrong? Where did i get the epic0.sites.net URL, you say? well If I go to https://epic.0sites.net:2083/3rdparty/phpMyAdmin/ I can reach my phpMyAdmin... I didn't think it would work.. it didn't. I starred out sensitive info.


Most likely your DB has run out of connections. That's one of the caveats of not closing connections properly in finally. I've warned about this in your previous question.

The remedy is to restart the DB in question and fix your code accordingly that it gracefully closes the resources in finally.


The important part of the exception stack trace seems to be:

Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.

So it looks like you can connect but then the connection is closed. Maybe you're not connecting to a mysql server ? (Is there something else running on this port ?)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜