JSP 预处理语句的优点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JSP 预处理语句的优点
预处理语句具有两个主要的优点:
●查询只需要被解析(或准备)一次,但可以使用相同或不同的参数执行多
次。
当查询准备好(Prepared)之后,数据库就会分析,编译并优化它要
执行查询的计划。
对于复杂查询来说,如果要重复执行许多次有不同参数
的但结构相同的查询,这个过程会占用大量的时间,使得应用变慢。
通过
使用一个预处理语句就可以避免重复分析、编译、优化的环节。
简单来说,
预处理语句使用更少的资源,执行速度也就更快。
●传给预处理语句的参数不需要使用引号,底层驱动会处理这个。
如果应用
独占地使用预处理语句,就可以确信没有SQL注入会发生。
正因为预处理语句是如此有用,它成了PDO惟一为不支持此特性的数据库提供的模拟实现。
这使你可以使用统一的数据访问规范而不必关心数据库本身是否具备此特性。
在JDBC组件中,PreparedStatement接口创建表示预编译的SQL语句的对象。
SQL语句经过预编译,并存储在PreparedStatement对象中。
然后,此对象可用来有效地多次执行此语句。
PreparedStatement接口继承Statement类,并与之在两方面有所不同:
●PreparedStatement实例包含已编译的SQL语句。
由于PreparedStatement对
象已预编译过,所以其执行速度要快于Statement对象。
因此,多次执行
的SQL语句经常创建为PreparedStatement对象,以提高效率。
●包含于PreparedStatement对象中的SQL语句可具有一个或多个IN参参。
IN参数的值在SQL语句创建时未被指定。
相反的,该语句为每个IN参数
保留一个问号(“?”)作为占位符。
每个问号的值必须在该语句执行之前,
通过适当的SetXXX方法来提供。
作为Statement的子类,PreparedStatement继承了Statement的所有功能。
另外它还添加了一整套方法,用于设置发送给数据库以取代IN参数占位符的值。
同时,三种方法execute、executeQuery和executeUpdate已被更改又以使其不再需要参数。
这些方法的Statement形式(接受SQL语句参数的形式)不应该用于PreparedStatement对象。
其详细信息如表6-6所示:
表6-6 PreparedStatement接口方法
上述表格中,setxxx类型方法还有setLong()、setString()等,其含义和表格中方法相同,这里就不在介绍。