java代码删除数据库中树形结构数据

在网上搜查了很多关于删除树形结构的文章,结果找到的都是一些简单的就删除2级目录的操作,完全没有删除嵌套多层的代码,介于此原因,就编写的如下代码,来删除嵌套多层的树形结构

eg:数据库代码

 CREATE TABLE mytest
(
 f_id NUMBER ,
 z_id NUMBER,
 m_name varchar2(20) 
)
INSERT INTO mytest VALUES (1,1,'小小');
INSERT INTO mytest VALUES (2,1,'小红');
INSERT INTO mytest VALUES (3,2,'小青');
INSERT INTO mytest VALUES (4,2,'小佳');
INSERT INTO mytest VALUES (5,3,'小南');
INSERT INTO mytest VALUES (6,4,'小心');
INSERT INTO mytest VALUES (7,7,'信心');
INSERT INTO mytest VALUES (8,6,'嘻嘻');
INSERT INTO mytest VALUES (9,6,'哈哈');


java代码

public class Test {
DBConnection dbConnection = new DBConnection();
private Connection coon;
private PreparedStatement ps;
private ResultSet rs;

       /变量list1来存放最终的删除数据所使用的条件f_id(在下面的方法中);

private void GetAllChildNodeId(List<Integer> list) {
List<Integer> list1 = new ArrayList<Integer>();//定义一个局部list1,来存放每次查询的数据,来作为条件,进行下次查询
coon = dbConnection.getConnection();//连接数据库,另一个类文件就省略了
String sql = "select f_id from mytest where z_id=?";
try {
for(Integer parent :list){
ps = coon.prepareStatement(sql);
ps.setInt(1, parent);
rs = ps.executeQuery();
while(rs.next()){
list1.add(rs.getInt(1));
}
}//下面要写一个判断语句,否则会进入死循环
if(list1.size()==0){
System.out.println("wancheng");
}else {
GetAllChildNodeId(list1);//进入递归方法
}
for(int parent :list1){
System.out.print(parent+"  list1    ");
}
} catch (SQLException e) {
e.printStackTrace();
}

}
//下面进行测试,结果在上面的方法中通过for循环遍历,结果为(3,4,5,6,8,9)
public static void main(String[] args) {
Test test = new Test();
List<Integer> list = new ArrayList<Integer>();
list.add(2);
test.GetAllChildNodeId(list);
}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值