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的学生信息已经删除成功了!