JDBC中Statement与PreparedStatement的区别
来源:互联网 发布:js数组遍历 编辑:程序博客网 时间:2024/05/11 20:20
1. statement每次执行sql语句,相关数据库都要执行sql语句的编译;preparedstatement是预编译的, 采用Cache机制(预编译语句,放在Cache中,下次执行相同SQL语句时,则可以直接从Cache中取出来,有利于sql生成查询计划。),对于批量处理可以大大提高效率. 也叫JDBC存储过程。
例如,如果要执行两条sql语句
select colume from table where colume=1;
select colume from table where colume=1;
一千个查询就生成一千个执行计划!
PreparedStatement用于使用绑定变量重用执行计划
select colume from table where colume=:x;
是否使用绑定变量对系统影响非常大,生成执行计划极为消耗资源
两种实现 速度差距可能成百上千倍
后者使用了PreparedStatement对象,而前者是普通的Statement对象。PreparedStatement对象不仅包含了SQL语句,而且大多数情况下这个语句已经被预编译过,因而当其执行时,只需DBMS运行SQL语句,而不必先编译。当你需要执行Statement对象多次的时候,PreparedStatement对象将会大大降低运行时间,当然也加快了访问数据库的速度。
这种转换也给你带来很大的便利,不必重复SQL语句的句法,而只需更改其中变量的值,便可重新执行SQL语句。选择PreparedStatement对象与否,在于相同句法的SQL语句是否执行了多次,而且两次之间的差别仅仅是变量的不同。如果仅仅执行了一次的话,在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理,PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处。
2. PrepareStatement中执行的SQL语句中是可以带参数的,也就是说可以替换变量,尽量采用使用?号的方式传递参数,增加代码的可读性又可以预编译加速;而Statement则不可以。
3. 防止SQL注入。在SQL中包含特殊字符或SQL的关键字(如:’ or 1 or ‘)时,Statement将出现不可预料的结果(出现异常或查询的结果不正确),可用PreparedStatement来解决。
- JDBC中Statement与PreparedStatement的区别
- JDBC中Statement与PreparedStatement的区别
- JDBC中Statement与PreparedStatement的区别
- JDBC中Statement与PreparedStatement的区别
- JDBC中PreparedStatement与Statement的区别与使用
- JDBC 4 PreparedStatement 与Statement 的区别
- JDBC PreparedStatement 与Statement 的区别
- JDBC之statement与preparedstatement的区别
- jdbc中 PreparedStatement 和Statement的区别
- JDBC中Statement、PreparedStatement、CallableStatement的区别
- JDBC:Statement与PreparedStatement的联系与区别
- JAVA中JDBC的Statement和PreparedStatement之间的区别
- 数据库JDBC查询,PreparedStatement与Statement的区别
- JDBC 笔记4 PreparedStatement 与Statement 的区别
- jdbc中Statement、PreparedStatement和CallableStatement的区别
- 在jdbc中Statement 和 PreparedStatement 之间的区别?
- JDBC 中preparedStatement和Statement区别
- Statement与PreparedStatement的区别
- HTTP报文
- Lucene 工作原理
- 系统重启之后,目录的属性变了,解决办法。
- CIO们准备好回答云计算ROI的问题了吗?
- SSIS学习之SSIS介绍
- JDBC中Statement与PreparedStatement的区别
- 学会一个人伤感。习惯一个人寂寞
- Linux修改logo
- Spring Integration实例代码分析之basic--http
- aspxgrid 客户端判断是否选中记录
- 关于工作与生活
- ORA-01843 无效的月份的解决方法/NLS_DATE_FORMAT参数
- 【转】getContextPath、getServletPath、getRequestURI的区别
- 灯火阑珊的伤感短篇日志分享:我的伤,你永远不懂