这个递归如何实现呢?请教各位达人。

iloveaifen 2004-09-18 04:33:27
这个递归如何实现呢?请教各位达人。

分类表结构,如:
ID PID
1 0
2 0
3 1
4 3
5 2
6 4
ID 1 是ID 3 的上级分类,ID 3 是ID 4 的三级分类,ID 4 是ID 6 的上级分类;
如何在删除ID为1的,同时删除ID 3,4,6呢?

这个递归如何实现呢?请教各位达人。

小弟不才,知道需要用递归,但是不清楚这段递归应该如何写。

请附段代码示例,谢谢!
...全文
103 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
iloveaifen 2004-09-19
Vector pParentID = null;
Vector cCategoryID = null;

Vector ParentID = null;
ParentID.add( CID ); //这个元素

Vector CategoryID = null;
CategoryID.add( CID );

while ( !ParentID.equals("") ) {
pParentID = ParentID;
ResultSet rs = dbc.executeQuery(
"SELECT CategoryID FROM information WHERE ParentID='" + pParentID + "'");
while (rs.next()) {
ParentID.add(rs.getString(0));
CategoryID.add(rs.getString(0));
}
ParentID.remove( pParentID ); //就是刚刚取出的parentID中非空元素
}

while ( !CategoryID.equals("") ) //非空
{
cCategoryID = CategoryID; //中非空元素
dbc.prepareStatement("DELETE FROM information WHERE CategoryID='" +
cCategoryID + "'");
}

我在SERVLET中这样写,为什么不执行呢?请大虾们帮忙看看。谢谢。
回复
iloveaifen 2004-09-18
请大家帮帮忙吧。给个实例好么?
回复
iloveaifen 2004-09-18
978107() 的兄弟。我还是不理解你说的话。能否给我一个实例呢?
回复
978107 2004-09-18
需要定义游标,因为你外键控制,所以不能级连删除,

需要定义两个存储过程,一个是主过程,用来嵌套子过程,在过程中,用游标来找属于传进去的ID的子集,然后循环游标,在循环中讲ID传给子过程自身,在游标循环外(注意删除语句的位置),执行删除语句,此时删除的就是最低级的ID

明白了,建议仔细的将字读,一个字一个字的读!
回复
d_selenite 2004-09-18
PID参照到ID,删除PID时会自动级联删除ID
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2004-09-18 04:33
社区公告
暂无公告