错误代码如下:
错误代码如下:
package cn.com.servlet;
import java.io.IOException;
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 javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.com.jdbc.JdbcUtils_DBCP;
import cn.com.pack.StringSeven;
public class BMI_Servlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//第一阶段
//查询数据库里面有的心率血压指标
//查询数据库有心率血压而且不重复的编号,
String sql="SELECT DISTINCT number FROM yh WHERE xl<>'255' AND xl<>'0' AND lpower<>'255'";
//使用连接
//初始化
Connection conn=null;
PreparedStatement st=null;
ResultSet rs=null;
List<String> list=new ArrayList<String>();
try {
//与数据库建立连接
conn=JdbcUtils_DBCP.getConnection();
st=conn.prepareStatement(sql);
rs=st.executeQuery();
//把结果集放在一个集合里面,因为涉及多个rs的时候尤其是彼此之间有关联,最好分开,以免出错导致连接不能释放,数据库连接数满
while(rs.next()){
String number=rs.getString(1);
list.add(number);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//关闭连接
JdbcUtils_DBCP.release(conn, st, rs);
}
//第二阶段
//根据num查询心率血压
//使用连接
//初始化
Connection conn1=null;
PreparedStatement st1=null;
ResultSet rs1=null;
//初始化
Connection conn2=null;
PreparedStatement st2=null;
ResultSet rs2=null;
String name=null;
String xl=null;
String lpower=null;
String upower=null;
String time=null;
List<StringSeven> String_sex=new ArrayList<StringSeven>();
for (String i : list) {
String sql1="SELECT * FROM yh WHERE number='"+i+"' AND xl<>'255' AND xl<>'0' AND lpower<>'255' ORDER BY TIME DESC LIMIT 1";
//与数据库建立连接
try {
conn1=JdbcUtils_DBCP.getConnection();
st1=conn.prepareStatement(sql1);
rs1=st.executeQuery();
while(rs1.next()){
xl=rs1.getString(3);
lpower=rs1.getString(4);
upower=rs1.getString(5);
time=rs1.getString(8);
//根据编号查询名称
String sqls="select name from person_info where number='"+i+"'";
conn2=JdbcUtils_DBCP.getConnection();
st2=conn.prepareStatement(sqls);
rs2=st.executeQuery();
if(rs2.next()){
name=rs2.getString(1);
}
JdbcUtils_DBCP.release(conn2, st2, rs2);
}
StringSeven sex=new StringSeven(name, i, xl, lpower, upower, time);
String_sex.add(sex);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
JdbcUtils_DBCP.release(conn1, st1, rs1);
}
}
//最后一个阶段 封装 跳转界面
request.setAttribute("list", String_sex);
request.getRequestDispatcher("Scheduling.jsp").forward(request, response);
}
}
我该关闭的都关闭了啊,不知道怎么回事,报错?
错误原因-写法错误:
conn已经关闭了,conn1建立连接,但是用的还是conn,所以程序报错
conn2也是