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

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呢?

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

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

请附段代码示例,谢谢!
...全文
128 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧