用树状结构显示BBS的帖子及其回帖,使用递归方法.
2016-03-06 23:43
507 查看
MySQL建表语句:
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);
JAVA程序
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 用树状结构显示BBS的帖子及其回帖,使用递归方法
* 输出结果:
* 蚂蚁大战大象
* 大象被打趴下了
* 蚂蚁也不好过
* 瞎说
* 没有瞎说
* 大象进医院了
* 护士是蚂蚁
* 怎么可能
* 怎么没可能
* 可能性是很大的
* @author E-Kunt
*
*/
public class bbs {
public static void main(String[] args) {
new bbs().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=tiger&useSSL=true");
stmt = conn.createStatement();
String sql = "select * from article where pid = 0";
rs = stmt.executeQuery(sql);
while(rs.next()) {
System.out.println(rs.getString("cont"));
showChildren(conn,rs.getInt("id"),1);
}
} catch (Exception 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 showChildren(Connection conn, int id, int level) {
Statement stmt = null;
ResultSet rs = null;
StringBuffer sb = new StringBuffer("");
for(int i = 0; i < level; i++) {
sb.append(" ");
}
try {
stmt = conn.createStatement();
String sql = "select * from article where pid = " + id;
rs = stmt.executeQuery(sql);
while(rs.next()) {
System.out.println(sb + rs.getString("cont"));
if(rs.getInt("isLeaf") != 0)
showChildren(conn,rs.getInt("id"),level + 1);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(rs != null) {
rs.close();
rs = null;
}
if(stmt != null) {
stmt.close();
stmt = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
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);
JAVA程序
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 用树状结构显示BBS的帖子及其回帖,使用递归方法
* 输出结果:
* 蚂蚁大战大象
* 大象被打趴下了
* 蚂蚁也不好过
* 瞎说
* 没有瞎说
* 大象进医院了
* 护士是蚂蚁
* 怎么可能
* 怎么没可能
* 可能性是很大的
* @author E-Kunt
*
*/
public class bbs {
public static void main(String[] args) {
new bbs().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=tiger&useSSL=true");
stmt = conn.createStatement();
String sql = "select * from article where pid = 0";
rs = stmt.executeQuery(sql);
while(rs.next()) {
System.out.println(rs.getString("cont"));
showChildren(conn,rs.getInt("id"),1);
}
} catch (Exception 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 showChildren(Connection conn, int id, int level) {
Statement stmt = null;
ResultSet rs = null;
StringBuffer sb = new StringBuffer("");
for(int i = 0; i < level; i++) {
sb.append(" ");
}
try {
stmt = conn.createStatement();
String sql = "select * from article where pid = " + id;
rs = stmt.executeQuery(sql);
while(rs.next()) {
System.out.println(sb + rs.getString("cont"));
if(rs.getInt("isLeaf") != 0)
showChildren(conn,rs.getInt("id"),level + 1);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(rs != null) {
rs.close();
rs = null;
}
if(stmt != null) {
stmt.close();
stmt = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
相关文章推荐
- 软件测试技术 hw1
- 《我是IT小小鸟》读笔
- CSS清浮动
- linux第6天 流协议-粘包
- 程序员修炼之道-笔记
- PHP创建一个炫酷的图表
- CentOS6.5中修改yum源
- 强缓存引起问题解决方案
- Prometheus监控 - 简介、架构及基本环境配置
- java精品博客收集
- MySQL安装、配置和使用(一)
- Java经典设计模式之五大创建型模式(附实例和详解)
- Java经典设计模式之五大创建型模式(附实例和详解)
- Java经典设计模式之五大创建型模式(附实例和详解)
- Java经典设计模式之五大创建模式(附实例和详解)
- 提升
- 第五章 初始化与清理
- JavaWeb之文件上传篇,
- HDU 1754 I Hate It
- NSTextView和Attribued String