JDBC实现删除操作的总结

JDBC实现删除处理操作的总结

在前两次的文章中,已经对JDBC的添加和查询操作做了总结,这里就不再复述了。这里给出传送门。

0x01 表结构

--创建学生信息表
CREATE TABLE Student
(
  stuId NUMBER NOT NULL  PRIMARY KEY,  -- 学生编号
  stuName VARCHAR(20) NOT NULL, -- 学生姓名
  stuSex  VARCHAR(4)  NOT NULL, -- 学生性别
  stuAddress  VARCHAR(100), -- 学生住址
  classId INT REFERENCES classInfo(classId)-- 学生所在班级(引用班级信息表 班级编号)
);

-- 插入学生信息表测试数据
INSERT INTO Student(stuId,stuName,stuSex,stuAddress,classId) VALUES(sequence_student.nextval,'刘备','男','中国光谷',100);
INSERT INTO Student(stuId,stuName,stuSex,stuAddress,classId) VALUES(sequence_student.nextval,'张飞','男','中国光谷',100);
INSERT INTO Student(stuId,stuName,stuSex,stuAddress,classId) VALUES(sequence_student.nextval,'关羽','男','中国光谷',100);
INSERT INTO Student(stuId,stuName,stuSex,stuAddress,classId) VALUES(sequence_student.nextval,'曹操','男','中国光谷',100);
INSERT INTO Student(stuId,stuName,stuSex,stuAddress,classId) VALUES(sequence_student.nextval,'孙权','男','中国光谷',104);
INSERT INTO Student(stuId,stuName,stuSex,stuAddress,classId) VALUES(sequence_student.nextval,'王昭君','女','中国光谷',103);

-- 提交事务
COMMIT;

0x02 Coding

  • 学生信息表实体类(StudentEntity)

    /**
     * 学生信息表实体对象
     * @author Mr. Yang
     */
    public class StudentEntity {
        private Integer stuId;  // 学生编号
        private String stuName; // 学生姓名
        private String stuSex;  // 学生性别
        private String stuAddress;  // 学生地址
        private ClassInfoEntity classinfo;  // 班级信息对象
        public Integer getStuId() {
            return stuId;
        }
        public void setStuId(Integer stuId) {
            this.stuId = stuId;
        }
        public String getStuName() {
            return stuName;
        }
        public void setStuName(String stuName) {
            this.stuName = stuName;
        }
        public String getStuSex() {
            return stuSex;
        }
        public void setStuSex(String stuSex) {
            this.stuSex = stuSex;
        }
        public String getStuAddress() {
            return stuAddress;
        }
        public void setStuAddress(String stuAddress) {
            this.stuAddress = stuAddress;
        }
        public ClassInfoEntity getClassinfo() {
            return classinfo;
        }
        public void setClassinfo(ClassInfoEntity classinfo) {
            this.classinfo = classinfo;
        }
    
    }
    
  • 数据库连接类(DBHelper)

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    /*
     * 数据库连接类
     */
    public class DBHelper {
        // 定义连接对象
        private static Connection conn = null;
    
        /**
         * 获取数据库连接的方法
         * @return  Connection连接对象
         */
        public static Connection getConnection() {
            // 定义驱动信息
            final String DRIVER = "oracle.jdbc.driver.OracleDriver";
            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 static 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) {
            Connection conn = DBHelper.getConnection();
            if(conn!=null) {
                System.out.println("数据库连接成功!");
            }else {
                System.out.println("数据库连接失败!");
            }
        }
    }
    
  • 测试类(删除方法、main方法(main方法用于测试删除方法))

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    /**
     * 测试类
     * @author Mr. Yang
     *
     */
    public class Test{
    
        // 定义数据库连接对象和数据库操作对象
        private Connection conn = null;
        private PreparedStatement pstm = null;
    
        public Boolean delClassInformation(Integer stuid) throws SQLException {
            // 定义标记
            boolean flag = false;
            // 获取连接对象
            conn = DBHelper.getConnection();
            // 定义删除SQL语句
            final String DELETE_SQL = "DELETE FROM student WHERE stuid=?";
            // 获取操作对象
            pstm = conn.prepareStatement(DELETE_SQL);
            // 给SQL语句设置值
            pstm.setInt(1, stuid);
            // 执行SQL语句
            int state = pstm.executeUpdate();
            if(state>0) {
            // 删除成功 提交事务
                flag = true;
                //提交事务
                conn.commit();
            }else{
            // 删除失败 回滚事务
                flag = false;
                conn.rollback();
            }
            return flag;
        }
    
        public static void main(String[] args) throws SQLException {
            Test test = new Test();
            Boolean delFlag = test.delClassInformation(100);
            if(delFlag==true) {
                System.out.println("学生信息删除成功!");
            }else {
                System.out.println("学生信息删除失败!");
            }
        }
    }
    

效果截图

  • SQLPLUS查询删除前的学生信息表

  • Eclipse控制台执行效果

  • SQLPLUS查询删除后的学生信息表

发现编号为23的学生信息已经删除成功了!

猜你喜欢

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