com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
java连接mysql,关闭每次操作完后,都会关闭数据库,但是关闭超过两次后就会报以上的错!
package com.pet.daoImp;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import com.pet.dao.BaseDao;
import com.pet.dao.PetOwnerDao;
import com.pet.entity.Pet;
import com.pet.entity.PetOwner;
//实现PetOwnerDao接口的类
public class PetOwnerDaoOracleImpl extends BaseDao implements PetOwnerDao{
private Connection conn =getConnection();
private PreparedStatement ps = null ;
private ResultSet rs = null;
@Override
public List<PetOwner> getAllOwner() {
// TODO Auto-generated method stub
List<PetOwner> petOwners = new ArrayList<PetOwner>();
String sql = "select * from petowner";
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
PetOwner petOwner = new PetOwner();
petOwner.setId(rs.getInt(1));
petOwner.setNAME(rs.getString(2));
petOwner.setPASSWORD(rs.getString(3));
petOwner.setMONEY(rs.getFloat(4));
petOwners.add(petOwner);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
closeAll(conn, ps, rs);
}
return petOwners;
}

//验证用户信息
@Override
public boolean selectOwner(String name,PetOwner po) {
// TODO Auto-generated method stub
boolean b = false;
String sql = "select * from petowner where name = '"+name+"'";
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
if (rs.next()) {
b = true;
po.setId(rs.getInt(1));
po.setNAME(rs.getString(2));
po.setPASSWORD(rs.getString(3));
po.setMONEY(rs.getFloat(4));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
closeAll(conn, ps, rs);
}
return b;
}

//主人购买宠物
@Override
public boolean petBuy(PetOwner po) {
// TODO Auto-generated method stub
boolean b = false;
float money = (float) (po.getMONEY() - 5.0);
String sql = "update petowner set MONEY = "+money+" where id = "+po.getId();
try {
ps = conn.prepareStatement(sql);
int a = ps.executeUpdate();
if (a>-1) {
b = true;
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
closeAll(conn, ps, rs);
}
return b;
}
}