這是我的代碼。我在MySQL中有一個用於處理的數據庫。我提到了與這個例外有關的所有問題。但是他們都沒有爲我解決。問題出在我用過的查詢上。當我把查詢作爲JDBC MySQL執行SQL失敗
SELECT * FROM customers;
然後它工作正常。但是當我將它更新爲以下時,將引發異常。
SELECT * FROM customer WHERE customer_id LIKE " + "'%" + consumerId + "%'
這是我得到的例外。
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:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1036)
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:627)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1013)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2234)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
at sun.reflect.GeneratedConstructorAccessor4.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at com.smart.data.customer.CustomerInfoProvider.findDetails(CustomerInfoProvider.java:81)
at com.smart.data.customer.CustomerInfoProvider.provideRequiredCustomerDetails(CustomerInfoProvider.java:28)
at com.smart.data.manipulator.Starter.main(Starter.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
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:2914)
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:559)
... 22 more
Exception in thread "main" java.lang.NullPointerException
at com.smart.data.customer.CustomerInfoProvider.provideRequiredCustomerDetails(CustomerInfoProvider.java:30)
at com.smart.data.manipulator.Starter.main(Starter.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
package com.smart.data.customer;
import org.apache.log4j.Logger;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.ArrayList;
import java.util.Properties;
/**
* Created with IntelliJ IDEA.
* User: dulithdecozta
* Date: 2/5/15
* Time: 7:20 PM
* To change this template use File | Settings | File Templates.
*/
public class CustomerInfoProvider {
static Logger log = Logger.getLogger(CustomerInfoProvider.class.getName());
ResultSet customerResultSet = null;
Connection conn = null;
public void provideRequiredCustomerDetails(ArrayList customerIdArraylist) {
for (int i = 0; i < customerIdArraylist.size(); i++) {
try {
customerResultSet = findDetails(customerIdArraylist.get(i).toString());
try {
while (customerResultSet.next()) {
try {
System.out.println("Fullname : " + customerResultSet.getString("fullname"));
System.out.println("Consumer ID : " + customerResultSet.getString("customer_id"));
System.out.println("City : " + customerResultSet.getString("city"));
System.out.println("gender : " + customerResultSet.getString("gender"));
System.out.println("Occupation : " + customerResultSet.getString("occupation"));
System.out.println(i);
System.out.println("*-*-*-*-*-*-*-*-*--*-*-*-*-*-*-*-*");
} catch (SQLException e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
public ResultSet findDetails(String consumerId) throws IOException {
// Load property file
Properties properties = new Properties();
// Define an input stream
InputStream inputStream = null;
ResultSet rs = null;
try {
inputStream = new FileInputStream("/home/abc/Desktop/Jigi/database.properties"); // Path to the property file
} catch (FileNotFoundException e) {
log.debug("Exception encountered : File Not Found : ");
e.printStackTrace();
}
try {
// load a properties file
properties.load(inputStream);
} catch (IOException e) {
log.debug("Exception encountered : A problem with the Input Stream : ");
e.printStackTrace();
}
conn = null;
Statement stmt = null;
try {
Class.forName(properties.getProperty("JDBC_DRIVER"));
// log.debug("Connecting to database...!!");
conn = DriverManager.getConnection(properties.getProperty("DB_URL"), properties.getProperty("USER"), properties.getProperty("PASS"));
// log.debug("Creating statement...!");
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM customer WHERE customer_id LIKE " + "'%" + consumerId + "%'");
} catch (Exception ex) {
ex.printStackTrace();
}
return rs;
}
}
把異常置於你的問題 – 2015-02-06 18:28:27
done @AmirHosseinMehrvarzi – 2015-02-06 18:31:33
你的驅動版本是否與你的MySQL版本兼容? – 2015-02-06 18:35:43