首先创建数据库并建立一张表
create database bbs;--创建一个名叫bbs的数据库
use bbs;--启用这个数据库
prompt \u@\h \d> --修改提示符,方面知道当前操作的用户,主机和数据库
--创建数据表 auto_increment自动递增
create table article
(
id int primary key auto_increment,
pid int,
rootid int,
title varchar(255),
cont text,
pdate datetime,
isleaf int
);
desc article; --在插入之前查看表结构,方便插入
--0 代表leaf,1代表非leaf
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);
创建完成之后如下图,其中id
是自动递增补全的
jdbc 连接数据库
第一步需要下载mysql-connector-java-5.1.40,建议下载最新版。这是用来连接MySQL数据库的jar包。它的目录结构如图
docs中是说明使用文档,mysql-connector-java-5.1.40-bin.jar文件是需要添加到工程路径的。
配置路径。首先将mysql-connector-java-5.1.40-bin.jar复制到工程目录,并添加到构建路径。
- 编写代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ArticleTree {
public static void main(String[] args) {
new ArticleTree().show();
}
// 显示
public void show(){
Connection conn = null;
Statement stmt =null ;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");//创建连接实例连接数据库
//通过URL连接数据库
conn = DriverManager.getConnection("jdbc:mysql://localhost/bbs?" + "user=root&password=root");//对应自己的用户名和密码
String sql = "select * from article where pid = 0";
//select * from article where pid = 0
stmt = conn.createStatement();//创建执行语句的对象
rs = stmt.executeQuery(sql);//设置要执行的语句
if (stmt.execute(sql)) {
rs = stmt.getResultSet();//执行语句并返回结果
}
while(rs.next()){
System.out.println(rs.getString("cont"));
tree(conn,rs.getInt("id"),1);
}
} catch(ClassNotFoundException e){
e.printStackTrace();
}
catch (SQLException 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();
}
}
}
public 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);
}
}
// strPre.delete(0,strPre.length());//从零开始删删到最后
} 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();
}
}
}
}
- 运行结果