admin 管理员组文章数量: 1184232
2024年3月12日发(作者:eclipse快捷键代码补全使用不了)
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接口方法
方法名称
clearParameters()
execute()
executeQuery()
功能描述
立即清除当前参数值
执行任何种类的SQL语句
在此PreparedStatement对象中执行SQL查询,
并返回由该查询生成的结果集
executeUpdate()
setBoolean (int parameterIndex, boolean x)
在此PreparedStatement对象中执行 SQL
INSERT、UPDATE 或 DELETE 语句
将指定的参数设置为Java boolean值。当它发送
至数据库时,DB2 Everyplace JDBC驱动程序将
它转换为SQL SMALLINT值
setBytes(int parameterIndex, byte[ ]x)
setDate(int parameterIndex, Date x)
setDouble(int parameterIndex, double x)
将指定的参数设置为字节的Java数组
将指定参数设置为值
将指定的参数设置为Java双精度值。当它发送
至数据库时,DB2 Everyplace JDBC驱动程序将
它转换为 SQL DECIMAL值
setInt (int parameterIndex, int x)
setNull (int parameterIndex, int sqlType)
targetSqlType)
将指定的参数设置为Java int值
将指定的参数设置为SQL NULL
setObject(int parameterIndex, Object x, int 使用给定对象来设置指定参数的值
上述表格中,setxxx类型方法还有setLong()、setString()等,其含义和表格中方
法相同,这里就不在介绍。
版权声明:本文标题:JSP 预处理语句的优点 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1710250196a564405.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论