代码比较多。贴一些关键的出来。
DBcon db = new DBcon(); Connection con=null; Statement stmt=null; PreparedStatement pstmt = null; ResultSet rs=null; try { con = db.getConnection(); stmt = con.createStatement();
sql = "select c_id,c_sid,c_jid,c_dtype,c_fee,c_text,c_userid,c_ip,c_appdate,c_retext,c_redate,c_enable,c_adm,c_check from t_dianping where c_appdate>='"
+stime+"' and c_appdate<='"+etime+" 23:59:00' "+whereSql+" order by c_id desc";
//System.out.println(sql);
DataTurnPage tp = new DataTurnPage();
// @return n*m 1 sql语句 2 本页显示条数 3 第几页
tp.selectTurnPage(sql,shownum,pagenow);
List s = new ArrayList();
s = tp.getRes(); //获得结果集
pagenum = tp.getPagenum(); //获得总页数
count = tp.getCount(); //获得总记录数
//获得结果集字段
Object[] obj = null;
for (int i = 0; i < s.size(); i++) {
obj = (Object[]) s.get(i);
//...这里省略一部分代码,就是从结果集数据中取数据的代码
//查
sql = "select c_sname,c_id from t_shops where c_id="
+ c_sname + " ";
rs = stmt.executeQuery(sql);
if (rs.next()) {
c_sname = rs.getString(1);
if (c_sname.length() > 8)
c_sname = c_sname.substring(0, 8) + ".";
}
rs.close();
if (Tools.isNumber(c_area) > 0) {
//查劵
sql = "select c_titles from t_juan where c_id="+ c_area + " ";
rs = stmt.executeQuery(sql);
if (rs.next()) {
c_sname = rs.getString(1);
if (c_sname.length() > 8)
c_sname = c_sname.substring(0, 8) + ".";
} rs.close(); } } } catch (Exception e) { System.out.println("Exception :" + e); e.printStackTrace();
} finally {
if (stmt != null) {
stmt.close();
}
if (pstmt != null) {
pstmt.close();
}
if (con != null) {
con.close();
}
Exception :com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after statement closed.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
其实这个错误意思还是非常明确的,Statement对象被关闭后又继续执行SQL,所有应该检查程序的流程。
这里有两个不同的SQL,建议封装到不同的方法中独立执行,独立创建Statement然后关闭。这样就不会互相影响
在方法体里面写个参数,把SQL当做参数抛进去,在业务层调用两次方法就好。其实这个错误意思还是非常明确的,Statement对象被关闭后又继续执行SQL,所有应该检查程序的流程。
这里有两个不同的SQL,建议封装到不同的方法中独立执行,独立创建Statement然后关闭。这样就不会互相影响
之所以会出现这个异常,是因为Mysql在5以后针对超长时间DB连接做了一个处理,那就是如果一个DB连接在无任何操作情况下过了8个小时后,Mysql会自动把这个连接关闭。所以使用连接池的时候虽然连接对象还在但是链接数据库的时候会一直报这个异常。
下面给你个链接,你自己看看:
http://blog.csdn.net/bedweather/article/details/6743951