您的位置:首页 > 运维架构

Operation not allowed after ResultSet closed

2015-04-30 20:04 375 查看
首先应该按照网上搜到的方法检查一下是否是一个statement对多个ResultSet进行操作。

比方说:Statement st = conn.CreateStatement();ResultSet rs1 = st.executeQuery();ResultSet rs2 = st.executeQuery();则必须先对rs1进行操作,然后再对rs2进行操作,不能交替操作。否则会引起rs已经关闭错误,因为执行第三条语句的时候,程序默认将rs2关闭,再对rs2进行操作的时候,就会发生上面描述的错误。2. 即在我的程序中所犯的错误:
下面是一个递归程序用来读取数据库中的帖子。



在一个tree函数中传入三个参数:一个数据库连接,一个父节点,一个层数。在想了好久之后,觉得自己是不是在递归的里层将rs close掉,导致外层使用不便啊,后来一想,这是递归程序,不会出现这种问题。顺着这个思路往下走,突然发现自己犯了一个很低级的错误:在递归里层将Connection变量关闭掉了,自然ResultSet也跟着关闭了,这才出现题目的那种错误。3. 关于JSP的调试方法:
在MyEclipse环境下,对于JSP程序进行断点调试,感觉不太方便,不如System.out.println语句来得实在。如上图所示,我在while循环之后,添加了一行打印语句,顺藤摸瓜慢慢缕清了思路。4. 心得:遇到bug一定不要急躁,遇到问题才是提升能力的机会,所谓的经验,其实就是解决的一个又一个的问题的累加。要想着自己一定能克服,要幻想着程序成功运行之后的喜悦,耐心的思考,才有可能找到问题的根源。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JSP ResultSet