zoukankan      html  css  js  c++  java
  • 《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博客园,感兴趣的小伙伴可以去看相关的其它博文。 

  • 相关阅读:
    Checking Types Against the Real World in TypeScript
    nexus pip proxy config
    go.rice 强大灵活的golang 静态资源嵌入包
    几个golang 静态资源嵌入包
    rpm 子包创建学习
    Rpm Creating Subpackages
    ava 类似jest snapshot 功能试用
    ava js 测试框架基本试用
    The Architectural Principles Behind Vrbo’s GraphQL Implementation
    graphql-compose graphql schema 生成工具集
  • 原文地址:https://www.cnblogs.com/yixueyuan/p/7552192.html
Copyright © 2011-2022 走看看