Java-JDBC连接 [英] Java - JDBC connection

查看:54
本文介绍了Java-JDBC连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到此错误:

       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

当我尝试在线连接到我的MySQL时.

when I am trying to connect to my MySQL online.

这是我的代码:

(是,已签名)

  //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 dumb 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();
            }
        }
    }

我做错了什么?你说我从哪里得到epic0.sites.net URL?好吧,如果我去https://epic.0sites.net:2083/3rdparty/phpMyAdmin/我可以到达我的phpMyAdmin ...我不认为这行得通..它没有.我为敏感信息加了星标.

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.

推荐答案

您的数据库很可能已耗尽连接.这是不能正确关闭finally中的连接的警告之一.我已经在您的上一个问题中对此进行了警告.

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.

解决方法是重新启动有问题的数据库,并相应地修复代码,以使其正常关闭finally中的资源.

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

这篇关于Java-JDBC连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆