连接数据库读取数据偶尔出错是个什么情况?
废话不多,直接代码
package net.pay.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.mysql.jdbc.ResultSet;
public class BaseHibernate {
private static String DRIVER="com.mysql.jdbc.Driver"; //数据库驱动
private static String USER="root"; //账号
private static String PWD="*********"; //密码
private static String URL="jdbc:mysql://localhost:3306/account?autoReconnect=true&";//连接路径
public Connection conn;
public PreparedStatement ps;
public ResultSet rs;
/**
* 创建连接
* @return
*/
public Connection getConnection(){
// initBaseHibernate();
try {
Class.forName(DRIVER);
try {
conn=DriverManager.getConnection(URL, USER, PWD);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
/**
* 关闭所有的连
* @param ps
* @param rs
* @param con
*/
public void closeAll(){
try {
if(ps!=null){
ps.close();
ps=null;
}
if(rs!=null){
rs.close();
rs=null;
}
if(conn!=null){
conn.close();
conn=null;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package net.pay.impl;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import net.pay.dao.BaseHibernate;
import net.pay.model.Account;
public class Accountdaoimpl extends BaseHibernate {
/**
* @return
*/
public String getContent(){
String sql="select * from account";
conn=this.getConnection();
String result="";
Account account = null;
ResultSet rs = null;
try {
ps= conn.prepareStatement(sql);
rs=ps.executeQuery();
while (rs.next()) {
account=new Account();
account.setContent(rs.getString("account"));
account.setId(rs.getInt("id"));
}
result=account.getContent();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.closeAll();
return result;
}
/**
* @return
*/
public List<Account> getRandomContent(){
String sql="select * from account";
conn=this.getConnection();
List<Account> alist=new ArrayList<Account>();
ResultSet rs = null;
try {
ps= conn.prepareStatement(sql);
rs=ps.executeQuery();
while (rs.next()) {
Account account=new Account();
account.setContent(rs.getString("account"));
account.setId(rs.getInt("id"));
alist.add(account);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.closeAll();
return alist;
}
}
package net.pay.impl;
import java.rmi.RemoteException;
import java.util.List;
import net.pay.inter.IAccountRemote;
import net.pay.model.Account;
public class AccountRemote extends RemoteException implements IAccountRemote {
/**
*
*/
private static final long serialVersionUID = -9184117739428113098L;
public AccountRemote() throws RemoteException {
super();
// TODO Auto-generated constructor stub
}
public String getContent() throws RemoteException {
// TODO Auto-generated method stub
Accountdaoimpl adi=new Accountdaoimpl();
String reuslt=adi.getContent();
return reuslt;
}
public List<Account> getContentList() throws RemoteException{
// TODO Auto-generated method stub
Accountdaoimpl adi=new Accountdaoimpl();
List<Account> alist=adi.getRandomContent();
return alist;
}
}
package net.pay.impl;
import java.rmi.RemoteException;
public class test {
public static void main(String[] args) throws RemoteException {
for (int i = 0; i <8000; i++) {
AccountRemote ar=new AccountRemote();
System.out.println("这是第"+i+"次:"+ar.getContent());;
}
}
}
错误信息为:
java.sql.SQLException: Server connection failure during transaction. Due to underlying exception: 'java.net.SocketException: java.net.SocketException: Permission denied: connect'.
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: java.net.SocketException: Permission denied: connect
STACKTRACE:
java.net.SocketException: java.net.SocketException: Permission denied: connect
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2680)
at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at net.pay.dao.BaseHibernate.getConnection(BaseHibernate.java:58)
at net.pay.impl.Accountdaoimpl.getContent(Accountdaoimpl.java:21)
at net.pay.impl.AccountRemote.getContent(AccountRemote.java:25)
at net.pay.impl.test.main(test.java:9)
** END NESTED EXCEPTION **
Attempted reconnect 3 times. Giving up.
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2749)
at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at net.pay.dao.BaseHibernate.getConnection(BaseHibernate.java:58)
at net.pay.impl.Accountdaoimpl.getContent(Accountdaoimpl.java:21)
at net.pay.impl.AccountRemote.getContent(AccountRemote.java:25)
at net.pay.impl.test.main(test.java:9)
Exception in thread "main" java.lang.NullPointerException
at net.pay.impl.Accountdaoimpl.getContent(Accountdaoimpl.java:26)
at net.pay.impl.AccountRemote.getContent(AccountRemote.java:25)
at net.pay.impl.test.main(test.java:9)