java.sql.SQLException: Operation not allowed after ResultSet closed

shouzhi2007 2009-10-13 05:53:05


package com.gunxue.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

//import com.xifan.db.DB;
import com.gunxue.pushHttp.PushTask;
import com.gunxueapi.test.ConnectionPool;

@SuppressWarnings("serial")
public class Push extends HttpServlet {
private static final Log log = LogFactory.getLog(Push.class);
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();

// 从url里得到得到用户名
String cpid = request.getParameter("name");
// 从url里得到密码
String cppwd = request.getParameter("password");
// 从url里得出电话
String mobile = request.getParameter("phone");
// 从url里得出内容
String msgcontent = request.getParameter("mtContent");
// 从URL里得到服务代码
String spnumber = request.getParameter("spnumber");
//取得当前时间
Date date = new Date();
DateFormat d2 = DateFormat.getDateTimeInstance();
String str2 = d2.format(date);
/*
* 服务器端
*/
try {
String SQL = "select cpid,cppwd from userinfo where count>0";
ConnectionPool pool = null;
pool = ConnectionPool.getInstance();
Connection conn = pool.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(SQL);
while (rs.next()) {
String m5pwd=Push.Md5(rs.getString(2));
if (cpid != null && !cpid.equals("")) {
if (rs.getString(1).equals(cpid.trim())) {
if (cppwd != null && !cppwd.equals("")) {
if (m5pwd.equals(cppwd.trim())) {
if (mobile != null
&& !mobile.equals("")) {
if (msgcontent != null
&& !msgcontent.equals("")) {
String resp = PushTask.work(mobile.trim(),msgcontent.trim());
if (!resp.trim().equals("0")) {
SQL = "insert into pushcontent(cpid,mobile,content,spnumber,cpdatetime,flag) value('"
+ cpid.trim()
+ "','"
+ mobile.trim()
+ "','"
+ msgcontent.trim()
+ "','"
+ spnumber
+ "','"
+ str2
+ "',1)";
stmt.executeUpdate(SQL);
SQL = "update userinfo set count=count-1 where cpid='"
+ cpid.trim() + "'";
stmt.executeUpdate(SQL);

out.println("0");

}
else {
SQL = "insert into pushcontent(cpid,mobile,content,spnumber,cpdatetime,flag) value('"
+ cpid.trim()
+ "','"
+ mobile.trim()
+ "','"
+ msgcontent.trim()
+ "','"
+ spnumber
+ "','"
+ str2
+ "',0)";
stmt.executeUpdate(SQL);
out.println("007");
}
} else {
out.println("006");// 内容为空
}
} else {
out.println("005");// 号码为空
}
} else {
out.println("004");// 密码不正确
}
} else {
out.println("003");// 密码为空
}
} else {
out.print("002");// 用户名不存在
}
} else {

out.println("001");// 没有填写用户名
}
// log.info("["+ip+"]"+cpid+"/"+cppwd+"{"+mobile+"}"+msgcontent+"#"+spnumber+"#");
}
rs.close();
stmt.close();
pool.release(conn);
pool.closePool();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

private static String Md5(String m5pwd) {
String m5pw="";
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(m5pwd.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
m5pw=buf.toString().substring(8, 24);
//System.out.println(m5pw);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return m5pw;
}
}




报这个异常:
java.sql.SQLException: Operation not allowed after ResultSet closed
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.ResultSet.checkClosed(ResultSet.java:655)
at com.mysql.jdbc.ResultSet.next(ResultSet.java:7302)
at com.gunxue.servlet.Push.doPost(Push.java:65)
at com.gunxue.servlet.Push.doGet(Push.java:32)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
...全文
1843 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianvsgao 2009-10-14
  • 打赏
  • 举报
回复
"insert into pushcontent(cpid,mobile,content,spnumber,cpdatetime,flag) value('"
+ cpid.trim()
+ "','"
+ mobile.trim()
+ "','"
+ msgcontent.trim()
+ "','"
+ spnumber
+ "','"
+ str2
+ "',1)";
貌似SQL有问题吧......
shouzhi2007 2009-10-13
  • 打赏
  • 举报
回复
at com.gunxue.servlet.Push.doPost(Push.java:65)

这个是65行
while (rs.next()) {
  • 打赏
  • 举报
回复
at com.gunxue.servlet.Push.doPost(Push.java:65)
检查一下这一行之前,是不是有ResultSet closed 的操作。
xiaozejun 2009-10-13
  • 打赏
  • 举报
回复
那是因为你 一个对象在没有关闭之前 被另外一个对象同时使用 引起的异常
去这里看看:http://hi.baidu.com/sengor/blog/item/0cb9c53d828b5bcf9f3d6299.html

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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