posts - 6,  comments - 4,  trackbacks - 0

数据库例子
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
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.*;



public class ArticleTree {
    

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

    
    
public void show(){
        Connection conn 
= null;
        Statement stmt 
= null;
        ResultSet rs 
= null;
        
try{
            Class.forName(
"com.mysql.jdbc.Driver");
            conn 
= DriverManager.getConnection("jdbc:mysql://localhost/bbs?user=root&password=********");
            stmt 
= conn.createStatement();
            rs 
= stmt.executeQuery("select * from article where pid = 0");
            
while (rs.next()){
                System.out.println(rs.getString(
"cont"));
                tree(conn, rs.getInt(
"id"),1);
            }

        }
catch(SQLException e){
            e.printStackTrace();
        }
catch(ClassNotFoundException e){
            e.printStackTrace();
        }
finally{
            
try{
                
if (rs!=null){
                    rs.close();
                    rs 
= null;
                }

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

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

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

        }

    }

    
    
private void tree(Connection conn,int id, int level){
        Statement stmt 
= null;
        ResultSet rs 
= null;
        StringBuffer strPre 
= new StringBuffer("");
        
for(int i = 0; i < level ; i++){
            strPre.append(
"    ");
        }

        
try{
            stmt 
= conn.createStatement();
            String sql 
= "select * from article where pid =" + id;
            rs 
= stmt.executeQuery(sql);
            
while(rs.next()){
                System.out.println(strPre 
+ rs.getString("cont"));
                
if(rs.getInt("isleaf")!=0){
                    tree(conn , rs.getInt(
"id") , level+1);
                    
                }

            }

            
        }
catch(SQLException e){
            e.printStackTrace();
        }
finally{
            
try{
                
if (rs!=null){
                    rs.close();
                    rs 
= null;
                }

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

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

        }

    }


}



输出结果:
--------------------------------------------------------------------------
蚂蚁大战大象
    大象被打趴下了
        蚂蚁也不好过
        瞎说
            没有瞎说
        大象进医院了
            护士是蚂蚁
    怎么可能
        怎么没有可能
        可能性是很大的

--------------------------------------------------------------------------

复习以下递归,这个东西如果不熟练,自己写起来是很麻烦的事情。脑子里老转不过弯。
posted on 2009-04-06 01:42 shivaree 阅读(493) 评论(1)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: