学习MySQL第二天---JDBC

首先创建数据库并建立一张表

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();
            }
        }
    }
}
  • 运行结果
    这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值