zoukankan      html  css  js  c++  java
  • JDBC复习2

    前面复习了一些基础知识以及如何抽取一些常用的代码,接下来就结合junit4做一个增删改查的小demo

    重点是这么几个步骤:1.创建连接 2.编写sql语句 3.编写sql语句的载体 4.如果是PreparedStatement的话要设置占位符 5.执行sql语句 6.其他

    在码代码过程中,发现自己规范引错了,正确的应该引java.sql下的,我引成了java.mysql.jdbc包下的

    此外,发现自己在创建sql载体的时候不熟练,忘记了。对于Statement的话,创建载体是 stmt = conn.createStatement()

    对于PreparedStatement的话,创建载体是 pst= conn.prepareStatement();  ***注意不要加了个d,这里是prepare

    1.新建web项目,引入jar包

    2.创建数据库,编写sql脚本

    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for student
    -- ----------------------------
    DROP TABLE IF EXISTS `student`;
    CREATE TABLE `student`  (
      `id` int(11) NOT NULL,
      `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
      `sex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    
    SET FOREIGN_KEY_CHECKS = 1;

    3.编写工具类和测试类

    package JDBC温习;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    /**
     * 提供获取连接和释放资源的 方法
     */
    public class JDBCUtils {
    
        /*
         * 获取连接方法
         */
        public static Connection getConnection() {
            Connection conn = null;
            try {
                Class.forName("com.mysql.jdbc.Driver");
                conn = DriverManager.getConnection("jdbc:mysql://localhost:3307/test?useUnicode=true&characterEncoding=utf-8", "root", "123456");
            } catch (Exception e) {
                e.printStackTrace();
            }
            return conn;
        }
        /*
         * 释放资源
         */
        public static void release(Connection conn, PreparedStatement pstmt, ResultSet rs) {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (pstmt != null) {
                try {
                    pstmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    
        }
    }
    package JDBC温习;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import org.junit.Test;
    
    /*
     * 测试类
     */
    public class test {
        /*
         * 添加用户
         */
        @Test
        public void add() {
            Connection conn = null;
            PreparedStatement pst = null;
    
            try {
                // 1.获取连接
                conn = (Connection) JDBCUtils.getConnection();
                // 2.编写sql语句(采用PreparedStatement)
                String sql = "insert into student values(?,?,?) ";
                // 3.获取执行sql语句的载体
                pst = conn.prepareStatement(sql);
                // 4.设置占位符
                pst.setInt(1, 6);
                pst.setString(2, "周东");
                pst.setString(3, "男");
                // 5.执行插入操作
                int updateRow = pst.executeUpdate();
                if (updateRow > 0) {
                    System.out.println("插入成功");
                } else {
                    System.out.println("插入失败");
                }
    
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                JDBCUtils.release(conn, pst, null);
            }
        }
    
        /*
         * 删除用户
         */
        @Test
        public void deleteById() {
            Connection conn = null;
            Statement stmt = null;
            try {
                // 1. 获取连接
                conn = JDBCUtils.getConnection();
                // 2. 编写sql语句(采用Statement方式)
                String sql = "delete from student where id=2 ";
                // 3. 获取sql语句载体
                stmt = conn.createStatement();
                // 4. 执行sql语句
                int updateRow = stmt.executeUpdate(sql);
                if (updateRow > 0) {
                    System.out.println("删除成功");
                } else {
                    System.out.println("删除失败");
                }
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            } finally {
                // 这里因为我工具类提供的是preparedStatement的关闭.
                JDBCUtils.release(conn, null, null);
            }
        }
    
        /*
         * 修改用户
         */
        @Test
        public void updateById() {
            Connection conn = null;
            PreparedStatement pst = null;
            try {
                // 1. 获取连接
                conn = JDBCUtils.getConnection();
                // 2. 编写sql语句(PreparedStatement方式)
                String sql = "update student set name=? , sex=? where id=? ";
                // 3. 创建sql载体
                pst = conn.prepareStatement(sql);
                // 4. 设置占位符
                pst.setString(1, "小花");
                pst.setString(2, "女");
                pst.setInt(3, 4);
                // 5. 执行sql语句
                int updateRow = pst.executeUpdate();
                if (updateRow > 0) {
                    System.out.println("更新成功");
                } else {
                    System.out.println("更新失败");
                }
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            } finally {
                JDBCUtils.release(conn, pst, null);
            }
        }
    
        /*
         * 查询用户 PS:简单查询,根据ID查某个学生
         */
        @Test
        public void findById() {
            Connection conn = null;
            Statement stmt = null;
            ResultSet rs = null;
            try {
                // 1. 获取连接
                conn = JDBCUtils.getConnection();
                // 2.编写sql语句
                String sql = "select * from student where id = 6 ";
                // 3.编写sql载体
                stmt = conn.createStatement();
                //4.执行sql语句
                rs = stmt.executeQuery(sql);
                //5. 遍历
                while(rs.next()) {
                    System.out.println(rs.getString(2)+"====="+rs.getString("sex"));
                }
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }finally {
                JDBCUtils.release(conn, null, rs);
            }
        }
    }

    以上是JDBC方面知识点的简单回顾

  • 相关阅读:
    scala中List、Array、ListBuffer、ArrayList、Set
    Spark Pipeline
    Spark MLlib
    minikube
    proxychains 安装
    网络性能测试
    Flexvolume
    kubectl 获取信息
    centos7 莫名重起的问题
    fio 测试磁盘
  • 原文地址:https://www.cnblogs.com/zengcongcong/p/10367010.html
Copyright © 2011-2022 走看看