我找了一个递归循环生成树,可使只能显示一部分,不能完全从数据库里取出数据,我先将循环部分代码贴出:
rootNode = new DefaultMutableTreeNode( "Root ");
jTreeCatalog = new JTree(rootNode);
//调用递归生成树方法
generateCatalogTree(0,rootNode);
//递归生成树方法
//----- pNode是父节点 ------ ID为节点的ID,对应数据库表中的ID字段
private void generateCatalogTree(int ID,DefaultMutableTreeNode pNode){
//循环递归id parentid
ResultSet rs=null;
DefaultMutableTreeNode childNode = null;
try{
st.setInt(1,ID);
rs = st.executeQuery();
while (rs.next()){
childNode=new DefaultMutableTreeNode(rs.getString( "Name ").trim());
pNode.add(childNode);
generateCatalogTree(rs.getInt( "ID "),childNode);
}
}catch(Exception e){
e.printStackTrace();
}
}
递归循环由子目录返回到父目录时,父目录的结果集已经关闭会出错。
原贴的解决办法是:先将数据取出来存入向量中,递归循环是从向量中取数据。
可使我不知道怎么使用向量取数据,还请各位高手帮帮忙!!!
最好写出循环的代码,谢谢!
------解决方案--------------------
使用ArrayList就可以。
------解决方案--------------------
这个会关闭是因为用了同一个Statement的问题,如果用两个不同的Statement产生一个父结果集一个子结果集,我想应该不会出现这样的问题吧.关注
------解决方案--------------------
在递归循环中不停的取ResultSet效率是很低的,楼主还是应该先把数据全取出来再构造树
可以考虑用Oracle的Connect By语句将数据库中的数据按照父子关系排列好,然后后续的处理就方便多了
------解决方案--------------------
弄个二维数组好了.A[2][rowcount] A[0][rowcount]=self_imformation A[1][rowcount]=parent_imformation