第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。

posted on 2018-01-31 22:56  東風★破  阅读(96)  评论(0)    收藏  举报

导航