查询数据库时以表格的形式输出
下面是主要代码,是一个servlet,在jsp页面中调用它,这里得值是从session中获得的,session的那个servlet和一个bin这里没有写出来,我想在jsp...
下面是主要代码,是一个servlet,在jsp页面中调用它,这里得值是从session中获得的,session的那个servlet和一个bin这里没有写出来,我想在jsp页面中以表格的形式输出来,但是得到的是null,大家帮我看看有什么不对吗 我还不太会写代码
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
BaseInfo bi=(BaseInfo)session.getAttribute("info");
JTable table;
ResultSet rs = getResult(bi);
ArrayList alist = new ArrayList();
String[] columnNames ={"家长会名称","家长会时间","状态","操作"};
Object[][] rowData=new Object[1][4];
try {
int count=0;
while(rs.next()){
rowData[count][0]=rs.getString("MEET_NAME");
rowData[count][1]=rs.getString("MEET_DATE");
rowData[count][2]=rs.getString("APP_STATE");
rowData[count][3]="11";
count++;
}
System.out.println(rowData[count][0]);
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.setAttribute("rs", alist);
request.getRequestDispatcher("/MyApplications.jsp").forward(request, response);
}
public ResultSet getResult(BaseInfo bi){
String DBDriver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@130.252.10.26:1521:MYORAC";
String user = "jingjing";
String pass = "jingjing";
ResultSet rs=null;
JTable table;
try{
Class.forName(DBDriver);
Connection conn = DriverManager.getConnection(url, user, pass);
PreparedStatement stmt = null;
stmt = conn.prepareStatement("select * from tb_myapplication where BASE_USER_INFO_ID =? ");
stmt.setString(1,bi.getBASE_USER_INFO_ID());
rs = stmt.executeQuery();
String MEET_NAME,MEET_DATE,APP_STATE;
conn.close();
}
catch (Exception e) {
e.printStackTrace();
}
return rs;
}
可是conn是在getResult中定义的 难道要在doPost中重复定义吗 那样会出错的啊 展开
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
BaseInfo bi=(BaseInfo)session.getAttribute("info");
JTable table;
ResultSet rs = getResult(bi);
ArrayList alist = new ArrayList();
String[] columnNames ={"家长会名称","家长会时间","状态","操作"};
Object[][] rowData=new Object[1][4];
try {
int count=0;
while(rs.next()){
rowData[count][0]=rs.getString("MEET_NAME");
rowData[count][1]=rs.getString("MEET_DATE");
rowData[count][2]=rs.getString("APP_STATE");
rowData[count][3]="11";
count++;
}
System.out.println(rowData[count][0]);
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.setAttribute("rs", alist);
request.getRequestDispatcher("/MyApplications.jsp").forward(request, response);
}
public ResultSet getResult(BaseInfo bi){
String DBDriver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@130.252.10.26:1521:MYORAC";
String user = "jingjing";
String pass = "jingjing";
ResultSet rs=null;
JTable table;
try{
Class.forName(DBDriver);
Connection conn = DriverManager.getConnection(url, user, pass);
PreparedStatement stmt = null;
stmt = conn.prepareStatement("select * from tb_myapplication where BASE_USER_INFO_ID =? ");
stmt.setString(1,bi.getBASE_USER_INFO_ID());
rs = stmt.executeQuery();
String MEET_NAME,MEET_DATE,APP_STATE;
conn.close();
}
catch (Exception e) {
e.printStackTrace();
}
return rs;
}
可是conn是在getResult中定义的 难道要在doPost中重复定义吗 那样会出错的啊 展开
展开全部
rs = stmt.executeQuery();
String MEET_NAME,MEET_DATE,APP_STATE;
conn.close();
你怎么能close呢?
在你把数据读取完毕之前,你都不能关闭数据库连接的!
==============================
给你几个原则,你自己考虑
1 一个con 应该自己拿到,自己使用完后关闭,这样不会出现连接泄漏
2 一个con内的数据库操作,必须全部完成后才能关闭,否则后面的操作将无法继续读取数据
3 一个完整的方法,应该在一个con里面完成,他可以调用其它辅助方法,并把con作为参数传过去。
String MEET_NAME,MEET_DATE,APP_STATE;
conn.close();
你怎么能close呢?
在你把数据读取完毕之前,你都不能关闭数据库连接的!
==============================
给你几个原则,你自己考虑
1 一个con 应该自己拿到,自己使用完后关闭,这样不会出现连接泄漏
2 一个con内的数据库操作,必须全部完成后才能关闭,否则后面的操作将无法继续读取数据
3 一个完整的方法,应该在一个con里面完成,他可以调用其它辅助方法,并把con作为参数传过去。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的是正解。你返回关闭了conn,rs随之也被关闭,你调用的方法再获得的肯定是null。不应该再getResult方法中关闭,应该再调用的方法,也就是doPost中,使用完了再去关闭
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询