第3.26课 上课 JDBC深入介绍, JDBC常用API深入介绍
3_26

JDBC深入介绍
JDBC常用API深入介绍
PreparedStatement对象
图

为什么要使用PreparedStatement代替Statement?
1.代码的可读性和可维护性.
2.PreparedStatement尽最大可能提高性能(不需要频繁编译,因为已经预加载了).
3.最重要的一点是极大地提高了安全性(可以防止SQL注入).
使用实例
import java.sql;
public interface PreparedStatement extends Statement
表示预编译的 SQL 语句的对象。
SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。
相比Statment接口的区别:
1. 比Statment高效
insert into e_user(name,sex,age) values('admin','男','28');
insert into e_user(name,sex,age) values(?,?,?);
2. 支持?通配符传递
使用方式:
// 获取对象时需要传入sql语句
stm = con.prepareStatement(sql.toString());
StringBuffer sql = new StringBuffer();
sql.append(" select * from e_user ");
sql.append(" where loginname = ? ");
sql.append(" and password = ? ");
// 支持?统配符 setXXX(第几个?号, 要设置的值)
stm.setString(1, loginname);
stm.setString(2, password);
// 执行sql语句返回结果集对象。注意,执行时不要参数
rs = stm.executeQuery();
3. 安全性高——大名鼎鼎的SQL注入,利用sql语句的问题实现破解用户密码登陆。
例如:
SELECT * FROM e_user
WHERE loginname = 'admin'
AND PASSWORD = '999'
OR '1'='1';
然后如果访问以下url,会一直登陆成功。(http://localhost:8080/loginapp/login.action?loginname=abc&password=999'or'1'='1)
结论: 实际开发中尽量使用PreparedStatement。
浙公网安备 33010602011771号