1、PreparedStatement 与SQL注入预防
PreparedStatement 能够预防SQL注入攻击主要由于:
- 预编译机制:SQL模板先被数据库编译,?占位符只作为数据处理,参与SQL语法解析
- 执行阶段:数据库将参数值与预编译语句结合执行
关键点:参数与SQL语句分离,参数值不会改变SQL结构
2、JDBC事务管理
数据库中事务是指一组SQL操作的集合,具有原子性、一致性、隔离性、持久性。
JDBC中的事务管理:
- 获取数据库连接
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名?参数","username","password");
- 设置手动提交模式
conn.setAutoCommit(false);
-
执行SQL操作
-
根据情况提交或回滚事务
//提交
conn.commit();
//回滚
conn.rollback();
- 关闭资源
//必须按顺序关闭:ResultSet → Statement → Connection
rs.close();
stmt.close();
conn.close();