连接数据库读取数据偶尔出错是个什么情况?

街边拐角流浪汉 2013-05-16 11:53:54
废话不多,直接代码
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)


...全文
87 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
第一次发帖。顶一下
  • 打赏
  • 举报
回复
这个错误是在for循环读出很多信息后偶尔出现的。不知道怎么处理。

1,220

社区成员

发帖
与我相关
我的任务
社区描述
企业软件 中间件技术
社区管理员
  • 中间件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧