《Java从入门到放弃》JavaSE入门篇:JDBC(入门版)

其实···,我个人是很不喜欢这样的缩写的,比如:我有一句MMP不知道该不该讲!!!

这里面的MMP你知道是什么意思么!!!

还有WQNMLGB,你知道是什么吗?是的,没错,写全了就是“我去年买了个包”!!!

好吧,还是讲点正经的,JDBC是什么呢?大家说得不错,就是“觉得不错”!!!其工作原理如下图:

wKioL1nAsi6BomlcAAB2TUiAn0E337.png

根据上图来看,使用的步骤很清楚了吧。

    第一步:导入JDBC的驱动包。

    第二步:使用DriverManager加载驱动。

    第三步:调用JDBC API访问或操作数据库中的数据。

wKiom1nAs6vgCs1cAAECl07HChU806.png

JDBC要使用的常用类和接口如下图如式:

wKioL1nAs9GyypNcAADSMFOTz1E910.png


接下来我们通过几个常用操作来演示使用Java访问MySql中的数据该如何编写代码。

先创建一个博客管理的数据库,在其中添加文章表,表中有以下几个字段:

    文章ID,文章标题,文章内容,发表时间,文章显示状态(0.不显示 1.显示)

之后再添加几条测试数据。

wKioL1nAxDHBp1DoAAA1MeNDM_w998.png

一、添加博文

1.1 创建Blog实体类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class Blog {
    private int blogid;   //ID
    private String title; //标题
    private String content;   //内容
    private String pubtime;   //发表时间
    private int blogstate;    //状态 0.不可见 1.可见
     
    public int getBlogid() {
        return blogid;
    }
    public void setBlogid(int blogid) {
        this.blogid = blogid;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public String getPubtime() {
        return pubtime;
    }
    public void setPubtime(String pubtime) {
        this.pubtime = pubtime;
    }
    public int getBlogstate() {
        return blogstate;
    }
    public void setBlogstate(int blogstate) {
        this.blogstate = blogstate;
    }
}

1.2 创建BlogDAO类,编写添加方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class BlogDAO {
    /**
     * 添加博客文章
     * @param blog
     * @return 是否添加成功 0.失败 1.成功
     */
    public int addBlog(Blog blog){
        int result = 0;
        try {
            //1. 加载驱动
            String driver = "com.mysql.jdbc.Driver";
            Class.forName(driver);
            //2. 创建连接
            String url = "jdbc:mysql://127.0.0.1:3306/blogdb";
            Connection conn = DriverManager.getConnection(url,"root","root");
            //3. 执行SQL语句,?表示占位符,后期可以使用setxxx()方法给对应的位置填充数据
            String sql ="INSERT INTO blogTbl (title, content) VALUES (?, ?)";
            PreparedStatement ps = conn.prepareStatement(sql);
            //3.1 填充数据
            ps.setString(1, blog.getTitle());
            ps.setString(2, blog.getContent());
            result = ps.executeUpdate();
            conn.close();
        }catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
         
        return result;
    }
}

1.3 创建Test类,测试添加方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args){
    Blog blog = new Blog();
    BlogDAO blogDAO = new BlogDAO();
     
    blog.setTitle("添加一个标题");
    blog.setContent("添加了一点点内容...");
     
    if(blogDAO.addBlog(blog)>0){
        System.out.println("添加成功!");
    }
    else{
        System.out.println("失败了...");
    }
}

结果:

wKiom1nAxUvyyS42AABAkqdrq1E505.png

二、查询所有博文

    因为前面需要创建的文件都已经创建了,所以这儿只需要在BlogDAO类中编写查询所有博文的方法即可。

2.1 编写查询所有博文的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public List<Blog> findAll(){
    List<Blog> list = new ArrayList<Blog>();
    try {
        //1. 加载驱动
        String driver = "com.mysql.jdbc.Driver";
        Class.forName(driver);
        //2. 创建连接
        String url = "jdbc:mysql://127.0.0.1:3306/blogdb";
        Connection conn = DriverManager.getConnection(url,"root","root");
        //3. 执行SQL语句
        String sql ="select blogid, title, content, pubtime, blogstate from blogTbl";
        PreparedStatement ps = conn.prepareStatement(sql);
        //3.1 读取数据并封装成Blog对象
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            Blog blog = new Blog();
            blog.setBlogid(rs.getInt("blogid"));    //getInt()也可以通过下标读取数据
            blog.setTitle(rs.getString("title"));
            blog.setContent(rs.getString("content"));
            blog.setPubtime(rs.getString("pubtime"));
            blog.setBlogstate(rs.getInt("blogstate"));
            list.add(blog);
        }
        conn.close();
    }catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return list;
}

注意:因为是读取数据,并且读取的数据不止一条记录,所以一般使用集合保存后返回。

2.2编写测试方法

1
2
3
4
5
6
7
8
9
10
11
12
13
public static void main(String[] args){
    BlogDAO blogDAO = new BlogDAO();
    List<Blog> list = blogDAO.findAll();
     
    System.out.println("文章ID 标题 发表时间 状态 内容");
    for (int i = 0; i < list.size(); i++) {
        System.out.println(list.get(i).getBlogid()+" "+
                list.get(i).getTitle() +" "+
                list.get(i).getPubtime()+" "+
                (list.get(i).getBlogstate()==0?"不可见":"可见")+" "+
                list.get(i).getContent());
    }
}

结果:

wKioL1nAyUWCgKidAABfAhZWzuE592.png

使用JDBC基本就这两个套路,一个是增、删、改的功能,一个是查询的功能。

练完,收功!!!j_0058.gif

“软件思维”博客地址:51CTO博客园,感兴趣的小伙伴可以去看相关的其它博文。 

原文地址:https://www.cnblogs.com/yixueyuan/p/7552192.html