MYsql 数据库 字段就几个 id pid name count(可有可无)
使用递归算法来查找 不多说了 上代码
/**
*
*/
package com.org.action;
import java.util.ArrayList;
import java.util.List;
import com.core.sql.SqlConn;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.ResultSet;
import com.org.model.PProduct;
/**
* @author linpeng
*
* 2013-5-7
*/
public class TraverseSql {
List<PProduct> list1 = new ArrayList<PProduct>();
public TraverseSql(){}
public List<PProduct> subNode(int id){
//输出当前节点
//输出
//System.out.println("father = "+id+"\n");
//取得所有子节点
//遍历子节点
List<PProduct> list=child(id);
for(PProduct p:list){
list1.add(p);
System.out.println("father-------= "+p.getId());
subNode(p.getId());
}
return list1;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TraverseSql aa = new TraverseSql();
List<PProduct> list= aa.subNode(2);
// List<PProduct> list = subNode(56);
for(PProduct pro:list){
System.out.println("father- = "+pro.getId());
}
}
public List child(int id){
String sql = "select * from p_product where pid='" + id
+ "'";
String url = null;
ResultSet rst = null;
Connection conn = null;
SqlConn sqlconn = new SqlConn();
List<PProduct> list=new ArrayList<PProduct>();
List list1 = new ArrayList();
try {
// id = "";
conn = SqlConn.getConnection();
rst = sqlconn.executeQuery(conn, sql);
while (rst.next()) {
PProduct p =new PProduct();
p.setId(rst.getInt("id"));
// System.out.println("child = "+rst.getInt("id")+"\n");
p.setCount(rst.getInt("count"));
p.setName(rst.getString("name"));
p.setPid(rst.getInt("pid"));
list.add(p);
list1.add(rst.getInt("id"));
}
}catch (Exception ex) {
System.out.printf("Fail");
}
return list;
}
}
使用的时候 就直接调用subNode方法就行了 因为她返回的是一个 全局的LIST 在遍历的时候 我吧遍历到的每个对象都存进去了 调用它会返回我遍历的所有的对象