JDBC进阶

5 阅读1分钟

1、PreparedStatement 与SQL注入预防

PreparedStatement 能够预防SQL注入攻击主要由于:

  • 预编译机制:SQL模板先被数据库编译,?占位符只作为数据处理,参与SQL语法解析
  • 执行阶段:数据库将参数值与预编译语句结合执行

关键点:参数与SQL语句分离,参数值不会改变SQL结构

2、JDBC事务管理

数据库中事务是指一组SQL操作的集合,具有原子性、一致性、隔离性、持久性

JDBC中的事务管理:

  1. 获取数据库连接
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名?参数","username","password");
  1. 设置手动提交模式
conn.setAutoCommit(false);
  1. 执行SQL操作

  2. 根据情况提交或回滚事务

//提交
conn.commit();
//回滚
conn.rollback();
  1. 关闭资源
//必须按顺序关闭:ResultSet → Statement → Connection 
rs.close(); 
stmt.close(); 
conn.close();