JDBC提供了Statement、PreparedStatement和CallableStatement三种方式来执行查询语句,其中Statement用于通用查询,PreparedStatement用于执行参数化查询,而CallableStatement则是用于存储过程

1. Statement、PreparedStatement和CallableStatement都是接口(interface)。

2. Statemet继承自Wrapper、PreparedStatement继承自Statement、CallableStatement继承自PrepareStatement。

3. Statement接口提供了执行语句和获取结果的基本方法;

PreparedStatement接口添加了处理IN参数的方法;

CallableStatement接口添加了处理OUT参数的方法。

4. Statement接口:普通的不带参的查询SQL;每次执行SQL语句时,数据库都要编译该SQL语句;支持批量更新,批量删除。

PreparedStatement接口:可变参数的SQL,编译一次,执行多次,效率高;安全性好,有效防止SQL注入等问题;支持批量更新,批量删除。

CallableStatement接口:继承自PreparedStatement,支持带参数的SQL操作;支持调用存储过程,提供了对输出和输入(IN、OUT)参数的支持。

Statement每次执行SQL语句,数据库都要执行SQL语句的编译,最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement。

PreparedStatement是预编译的,使用它的几个好处:

1. 在执行可变参数的一条SQL时,PreparedStatement比Statement的效率高,因为DBMS预编译一条SQL当然会比好多次编译SQL的效率要高。

2. 安全性好,有效防止SQL注入等问题。

3. 对于多次重复执行的语句,使用PreparedStatement效率会更高一点,并且在这种情况下也比较适合使用batch。

4. 代码的可读性和可维护性。

最新文章

  1. 常见web攻击以及防御
  2. MYSQL之基本操作
  3. JavaScript 对象、DOM对象、jquery对象的区别、转换详解
  4. maven错误解决一:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile)
  5. ViewState与Session
  6. 解决vbox下安装centos不能上网问题
  7. 【C#|.NET】从细节出发(三) 逻辑层事务和page object模式
  8. Unity Adam特性整理
  9. java—— 文件操作
  10. 【攻防实战】SQL注入演练!
  11. 三星Galaxy s4(i9505)得到完美root权限教程
  12. UDP接收百万级数据的解决方案
  13. poj1006中国剩余定理
  14. poj1014二进制优化多重背包
  15. SAP MM 明明有需求,为啥MRP RUN后没有PR单据产生?
  16. 百度 Javascript开发 API
  17. JS 数组位置方法 indexOf()和lastIndexOf()的理解
  18. pinyin4j 中文转拼音
  19. docker学习实践之路[第一站]环境安装
  20. 持续集成篇_08_Hudson持续集成服务器的使用(自动化编译、分析、打包、部署)

热门文章

  1. 【ElasticSearch】概念
  2. 在Mac电脑上使用NTFS移动硬盘遇到问题
  3. 用jquery实现图片轮播
  4. [STL]lower_bound&upper_bound
  5. PHP获取时间排除周六、周日的两个方法
  6. CodeForces - 587E[线段树+线性基+差分] ->(线段树维护区间合并线性基)
  7. “The creator of this fault did not specify a Reason” Exception
  8. 【CDN+】 一些常用的Linux命令,crontab+VI+Hive(持续更新)
  9. 前端工具-ES6相关工具
  10. php中的构造函数与析构函数