数据库例子
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
create database bbs;
use bbs;
create table article 
(
id int primary key auto_increment,
pid int,
rootid int,
title varchar(255),
cont text,
pdate datetime,
isleaf int 
);
insert into article values (null, 0, 1, '蚂蚁大战大象', '蚂蚁大战大象', now(), 1);
insert into article values (null, 1, 1, '大象被打趴下了', '大象被打趴下了',now(), 1);
insert into article values (null, 2, 1, '蚂蚁也不好过','蚂蚁也不好过', now(), 0);
insert into article values (null, 2, 1, '瞎说', '瞎说', now(), 1);
insert into article values (null, 4, 1, '没有瞎说', '没有瞎说', now(), 0);
insert into article values (null, 1, 1, '怎么可能', '怎么可能', now(), 1);
insert into article values (null, 6, 1, '怎么没有可能', '怎么没有可能', now(), 0);
insert into article values (null, 6, 1, '可能性是很大的', '可能性是很大的', now(), 0);
insert into article values (null, 2, 1, '大象进医院了', '大象进医院了', now(), 1);
insert into article values (null, 9, 1, '护士是蚂蚁', '护士是蚂蚁', now(), 0);
------------------------------------------------------------------------------------------------------------------------------
下面是用递归列出树状结构:
 import java.sql.*;
import java.sql.*;




 public class ArticleTree
public class ArticleTree  {
{
 
    


 public static void main(String[] args)
    public static void main(String[] args)  {
{
 ArticleTree at = new ArticleTree();
        ArticleTree at = new ArticleTree();
 at.show();
        at.show();
 }
    }
 
    

 public void show()
    public void show() {
{
 Connection conn = null;
        Connection conn = null;
 Statement stmt = null;
        Statement stmt = null;
 ResultSet rs = null;
        ResultSet rs = null;

 try
        try {
{
 Class.forName("com.mysql.jdbc.Driver");
            Class.forName("com.mysql.jdbc.Driver");
 conn = DriverManager.getConnection("jdbc:mysql://localhost/bbs?user=root&password=********");
            conn = DriverManager.getConnection("jdbc:mysql://localhost/bbs?user=root&password=********");
 stmt = conn.createStatement();
            stmt = conn.createStatement();
 rs = stmt.executeQuery("select * from article where pid = 0");
            rs = stmt.executeQuery("select * from article where pid = 0");

 while (rs.next())
            while (rs.next()) {
{
 System.out.println(rs.getString("cont"));
                System.out.println(rs.getString("cont"));
 tree(conn, rs.getInt("id"),1);
                tree(conn, rs.getInt("id"),1);
 }
            }

 }catch(SQLException e)
        }catch(SQLException e) {
{
 e.printStackTrace();
            e.printStackTrace();

 }catch(ClassNotFoundException e)
        }catch(ClassNotFoundException e) {
{
 e.printStackTrace();
            e.printStackTrace();

 }finally
        }finally {
{

 try
            try {
{

 if (rs!=null)
                if (rs!=null) {
{
 rs.close();
                    rs.close();
 rs = null;
                    rs = null;
 }
                }

 if (stmt!=null)
                if (stmt!=null) {
{
 stmt.close();
                    stmt.close();
 stmt = null;
                    stmt = null;
 }
                }

 if (conn!=null)
                if (conn!=null) {
{
 conn.close();
                    conn.close();
 conn = null;
                    conn = null;
 }
                }

 }catch(SQLException e)
            }catch(SQLException e) {
{
 e.printStackTrace();
                e.printStackTrace();
 }
            }
 }
        }
 }
    }
 
    

 private void tree(Connection conn,int id, int level)
    private void tree(Connection conn,int id, int level) {
{
 Statement stmt = null;
        Statement stmt = null;
 ResultSet rs = null;
        ResultSet rs = null;
 StringBuffer strPre = new StringBuffer("");
        StringBuffer strPre = new StringBuffer("");

 for(int i = 0; i < level ; i++)
        for(int i = 0; i < level ; i++) {
{
 strPre.append("    ");
            strPre.append("    ");
 }
        }

 try
        try {
{
 stmt = conn.createStatement();
            stmt = conn.createStatement();
 String sql = "select * from article where pid =" + id;
            String sql = "select * from article where pid =" + id;
 rs = stmt.executeQuery(sql);
            rs = stmt.executeQuery(sql);

 while(rs.next())
            while(rs.next()) {
{
 System.out.println(strPre + rs.getString("cont"));
                System.out.println(strPre + rs.getString("cont"));

 if(rs.getInt("isleaf")!=0)
                if(rs.getInt("isleaf")!=0) {
{
 tree(conn , rs.getInt("id") , level+1);
                    tree(conn , rs.getInt("id") , level+1);
 
                    
 }
                }
 }
            }
 
            

 }catch(SQLException e)
        }catch(SQLException e) {
{
 e.printStackTrace();
            e.printStackTrace();

 }finally
        }finally {
{

 try
            try {
{

 if (rs!=null)
                if (rs!=null) {
{
 rs.close();
                    rs.close();
 rs = null;
                    rs = null;
 }
                }

 if (stmt!=null)
                if (stmt!=null) {
{
 stmt.close();
                    stmt.close();
 stmt = null;
                    stmt = null;
 }
                }

 }catch(SQLException e)
            }catch(SQLException e) {
{
 e.printStackTrace();
                e.printStackTrace();
 }
            }
 }
        }
 }
    }

 }
}

输出结果:
--------------------------------------------------------------------------
蚂蚁大战大象
    大象被打趴下了
        蚂蚁也不好过
        瞎说
            没有瞎说
        大象进医院了
            护士是蚂蚁
    怎么可能
        怎么没有可能
        可能性是很大的
--------------------------------------------------------------------------
复习以下递归,这个东西如果不熟练,自己写起来是很麻烦的事情。脑子里老转不过弯。 
 
	
posted on 2009-04-06 01:42 
shivaree 阅读(513) 
评论(1)  编辑  收藏