이것은 내 코드입니다. 나는 처리를 위해 사용하는 MySQL DB를 가지고있다. 나는이 예외와 관련된 모든 질문을 언급했다. 그러나 그들 중 누구도 나를 위해 일을하지 않았습니다. 문제는 내가 사용한 쿼리 때문입니다. 쿼리를 만들 때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;
}
}
질문에 예외도 넣으십시오 –
done @AmirHosseinMehrvarzi –
귀하의 MySQL 버전과 호환되는 드라이버 버전입니까? –