public class TableChanger { 
Connection conn; 
Statement stmt; 
ArrayList arraylist; 
public TableChanger() 

try{ 
DataConnection dc = new DataConnection(); 
this.conn = dc.getConn(); 
this.stmt = conn.createStatement(); 

catch(Exception ex) 
{ex.printStackTrace();} 
} public TreeNode ChangerToTreeNode(String parentID) { TreeNode treenode = new TreeNode(); String query = "select * from tbl_tree where parentID = '" + parentID +"'"; 
try{ 
ResultSet rs = this.stmt.executeQuery(query); 
while(rs.next()) 

TreeNode subnode = new TreeNode(); String name = rs.getString("Name"); 
subnode.setName(name); 
subnode.setCaption(rs.getString("Caption")); 
subnode.setValue(rs.getString("value")); 
subnode.setTarget(rs.getString("target")); 
String sub = "select * from tbl_tree where parentID='"+name+"'"; 
ResultSet subrs = this.stmt.executeQuery(sub); 
if(subrs !=null)

subnode.addSubNode(this.ChangerToTreeNode(name)); 

treenode.addSubNode(subnode); 


catch(Exception ex) 
{ ex.printStackTrace();} return treenode; } 

说明一下,tbl_tree表的结构是是 
Name Caption value target parentID 
A        a                            0
A1      a1                          A 
A11    a11                        A1 
A2      a2                          A (parentID代表父节点的Name,通过递归查找就能建立树结构) TreeNode类结构是 
public class TreeNode { 
String name; 
String caption; 
String value; 
String target; 
ArrayList subNodeList; public TreeNode() { 
this.subNodeList = new ArrayList(); 
} public void setName(String name) 
{ this.name = name; } . 


public void addSubNode(TreeNode treenode) 
{ this.subNodeList.add(treenode); }我写了一个类TableChanger 。 
ChangerToTreeNode()方法用递归将数据库中的表tbl_tree转换成树结构的类treenode 
但是运行的时候总是报错,说resultset已经被关闭,递归不能进行,java.sql.SQLException: ResultSet is closedat sun.jdbc.odbc.JdbcOdbcResultSet.checkOpen(JdbcOdbcResultSet.java:6502)at sun.jdbc.odbc.JdbcOdbcResultSet.next(JdbcOdbcResultSet.java:1233)at com.accp.model.TableChanger.ChangerToTreeNode(TableChanger.java:47)at com.accp.model.TableChanger.ChangerToTreeNode(TableChanger.java:62)at com.accp.model.TableChanger.ChangerToTreeNode(TableChanger.java:62)at com.accp.model.TableTest.<init>(TableTest.java:10)at com.accp.model.TableTest.main(TableTest.java:18)如果我注释掉以下这段代码,只能得到根节点下第一层的节点String sub = "select * from tbl_tree where parentID='"+name+"'"; 
ResultSet subrs = this.stmt.executeQuery(sub); 
while(subrs.next()) 

subnode.addSubNode(this.ChangerToTreeNode(name)); 

问题是不是出在递归的时候又打开一个resultset,前面的就关闭了?怎么解决这个问题?请各位高手指点一下,谢谢