[英]Java - JDBC connection
我收到此錯誤:
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時。
這是我的代碼:
(是的,已簽名)
//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 ... 我加注了敏感信息。
您的數據庫很可能已用盡連接。 這是finally
不能正確關閉連接的警告之一。 在您之前的問題中,我已經對此進行了警告。
補救措施是重新啟動有問題的數據庫,並相應地修復您的代碼,以便finally
關閉資源。
異常堆棧跟蹤的重要部分似乎是:
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
因此看起來您可以連接,但是連接已關閉。 也許您沒有連接到mysql服務器? (此端口上還有其他內容嗎?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.