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博客园,感兴趣的小伙伴可以去看相关的其它博文。 

  • 相关阅读:
    spring基于xml导入配置文件
    spring中bean的继承和依赖关系
    spring整合junit
    spring新注解说明
    Web微信开发工具无法输入中文?官方bug
    vue踩坑 导出new Vue.Store首字母要大写
    关于vue ui组件
    vue组件的生命周期
    Vue的指令以及组件化开发
    webpack的npm扩展使用
  • 原文地址:https://www.cnblogs.com/yixueyuan/p/7552192.html
Copyright © 2011-2022 走看看