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

来源:互联网 发布:天猫淘宝内部券优惠群 编辑:程序博客网 时间:2024/04/25 10:26

在网上搜查了很多关于删除树形结构的文章,结果找到的都是一些简单的就删除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);
}

}

原创粉丝点击