JDBC操作数据库 Create操作总结

JDBC操作数据库 CREATE操作

0x01 JDBC是什么

JDBC是Java Database Connectivity(Java数据库连接)的缩写,JDBC定义了用户如何通过Java语言去连接数据库。它是来自Oracle公司的Java标准版平台的一部分。它提供查询和更新数据库中的数据的方法,并面向关系数据库。
– 来源于《维基百科》

0x02 什么是CRUD操作

CRUD是CREATE(增加)、READ(查询)、UPDATE(修改)、DELETE(删除)的简写,即JDBC的增、删、查、改四个操作。

0X03 实现流程

  • 语言/环境

    • 实现语言:Java
    • 环境要求:
      • 开发平台:eclipse
      • 数据库:Oracle
      • 中间件:odbc6 (密码:p8h2)
  • JDBC操作数据库基本步骤

    1. 注册数据库驱动程序到Java虚拟机(JVM)
    2. 建立数据库连接;
    3. 创建数据库操作对象;
    4. 定义操作的SQL语句;
    5. 执行数据库操作;
    6. 获取并操作结果集;
    7. 关闭对象,对数据库操作的资源进行回收(关闭结果集ResultSet->关闭操作PreparedStatement->关闭连接对象Connection)
  • 需求分析

    • 表结构
    -- 班级信息表
    CREATE TABLE classInformation
    (
        classId INT NOT NULL PRIMARY KEY,   -- 班级编号
        className   VARCHAR(40) NOT NULL,   -- 班级名称
        classDate   DATE DEFAULT SYSDATE NOT NULL,  -- 班级创建时间
        classNote   VARCHAR(200)    -- 班级备注
    );
    • 新增步骤:
      1. 创建数据库连接类
      2. 创建班级信息表实体类对象类
      3. 创建新增记录的方法,使用prepareStatement设置参数,返回布尔值(true:成功/false:失败)

0x04 Coding

  • 班级实体类

    import java.util.Date;
    
    /*
     * 班级信息表实体类
     */
    public class ClassInformationEntity {
        private Integer classId;    // 班级编号
        private String className;   // 班级名称
        private Date classDate;     // 班级创建时间
        private String classNote;   // 班级备注
        public Integer getClassId() {
            return classId;
        }
        public void setClassId(Integer classId) {
            this.classId = classId;
        }
        public String getClassName() {
            return className;
        }
        public void setClassName(String className) {
            this.className = className;
        }
        public Date getClassDate() {
            return classDate;
        }
        public void setClassDate(Date classDate) {
            this.classDate = classDate;
        }
        public String getClassNote() {
            return classNote;
        }
        public void setClassNote(String classNote) {
            this.classNote = classNote;
        }
    }
  • 数据库连接类

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    /*
     * 数据库连接类
     */
    public class DBHelper {
        // 定义连接对象
        private Connection conn = null;
        // 定义操作对象
        private PreparedStatement pstm = null;
        // 定义结果集对象
        private ResultSet rs = null;
    
        /**
         * 获取数据库连接的方法
         * @return  Connection连接对象
         */
        public Connection getConnection() {
            // 定义驱动信息
            final String DRIVER = "oracle.jdbc.driver.OracleDriver";
            /*
             * jdbc:表示采用jdbc方式连接数据库
             * oracle:表示连接的是Oracle数据库
             * thin:表示连接时采用thin模式
             * @192.168.1.19表示目标数据库服务所在的网络位置
             * 1521:端口号,Oracle服务默认端口1521
             * orcl:数据库实例名称
             */
            final String URL = "jdbc:oracle:thin:@192.168.1.19:1521:orcl";
            final String USER = "scott";        // 数据库登录用户名
            final String PASSWORD = "tiger";    // 数据库登录密码
            try {
                // 注册驱动
                Class.forName(DRIVER);
                conn = DriverManager.getConnection(URL, USER, PASSWORD);
            } catch (Exception e) {
    
            }
            return conn;
        }
    
        /**
         * 关闭数据库资源
         * @param conn  数据库连接对象
         * @param pstm  数据库操作对象
         * @param rs    结果集对象
         */
        public void closeConnection(Connection conn,PreparedStatement pstm,ResultSet rs) {
            try {
                if(rs!=null) {
                    rs.close();
                }
                if(pstm!=null) {
                    pstm.close();
                }
                if(conn!=null) {
                    conn.close();
                }
            } catch (Exception e) {
    
            }
        }
    
        /**
         * 测试数据库连接是否成功
         * @param args
         */
        public static void main(String[] args) {
            DBHelper db = new DBHelper();
            Connection connection = db.getConnection();
            if(connection!=null)
                System.out.println("数据库连接成功!");
            else
                System.out.println("数据库连接失败!");
        }
    }

    附:Oracle连接字符串JDBC语句的详解

  • Insert类

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.util.Date;
    import java.sql.ResultSet;
    
    public class Insert {
        // 声明数据库连接对象
        private Connection conn = null;
        // 声明数据库操作对象
        private PreparedStatement pstm = null;
        // 声明结果集对象
        private ResultSet rs = null;
    
        /**
         * @param classInfo 班级信息对象
         * @return  flag为true表示添加成功,提交事务
         *          flag为false表示添加失败,回滚事务;
         */
        public boolean insertClassInformaion(ClassInformationEntity classInfo) throws SQLException {
            Boolean flag = false;
            try {
                // 获取连接对象
                conn = DBHelper.getConnection();
                // 定义SQL语句
                final String INSERT = "INSERT INTO classInfo(classId,className,classDate,classNote) VALUES(?,?,?,?)";
                // 获取操作对象
                pstm = conn.prepareStatement(INSERT);
                // 通过PrepareStatement设置参数
                pstm.setInt(1, 135);                            // 设置班级编号
                pstm.setString(2, classInfo.getClassName());    // 设置班级名称
                pstm.setDate(3, new java.sql.Date(classInfo.getClassDate().getTime())); // 设置创建日期
                pstm.setString(4, classInfo.getClassNote());    // 设置班级备注
                // 执行SQL语句
                pstm.executeUpdate();
                // 提交事务,将数据写入到数据库中,永久保存(如果不提交,则数据在内存中保存)
                conn.commit();
                flag = true;
            } catch(SQLException e) {
                // 数据添加失败,回滚事务
                conn.rollback();
            } finally {
                // 回收数据库资源
                DBHelper.closeConnection(conn, pstm, rs);
            }
            return flag;
        }
    
        public static void main(String[] args) throws Exception {
            // 声明并实例化Insert对象
            Insert insert = new Insert();
            // 声明并实例化班级信息实体类(ClassInformationEntity)
            ClassInformationEntity classEntity = new ClassInformationEntity();
            // 把参数封装到实体对象
            classEntity.setClassId(135);
            classEntity.setClassName("包拯");
            classEntity.setClassDate(new Date());
            classEntity.setClassNote("包青天");
            boolean insertClassInformaion = insert.insertClassInformaion(classEntity);
            if(insertClassInformaion) {
                System.out.println("班级信息插入成功!");
            }else {
                System.out.println("班级信息插入失败!");
            }
        }
    }
    
  • 效果截图

    • 控制台输出结果

    Console Output

    • 数据库查询结果

    CMD Output

猜你喜欢

转载自blog.csdn.net/Charles_Yeoung/article/details/82470321