JDBC之Statement、PreparedStatement和CallableStatement
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. 代码的可读性和可维护性。
最新文章
- 常见web攻击以及防御
- MYSQL之基本操作
- JavaScript 对象、DOM对象、jquery对象的区别、转换详解
- maven错误解决一:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile)
- ViewState与Session
- 解决vbox下安装centos不能上网问题
- 【C#|.NET】从细节出发(三) 逻辑层事务和page object模式
- Unity Adam特性整理
- java—— 文件操作
- 【攻防实战】SQL注入演练!
- 三星Galaxy s4(i9505)得到完美root权限教程
- UDP接收百万级数据的解决方案
- poj1006中国剩余定理
- poj1014二进制优化多重背包
- SAP MM 明明有需求,为啥MRP RUN后没有PR单据产生?
- 百度 Javascript开发 API
- JS 数组位置方法 indexOf()和lastIndexOf()的理解
- pinyin4j 中文转拼音
- docker学习实践之路[第一站]环境安装
- 持续集成篇_08_Hudson持续集成服务器的使用(自动化编译、分析、打包、部署)
热门文章
- 【ElasticSearch】概念
- 在Mac电脑上使用NTFS移动硬盘遇到问题
- 用jquery实现图片轮播
- [STL]lower_bound&;upper_bound
- PHP获取时间排除周六、周日的两个方法
- CodeForces - 587E[线段树+线性基+差分] ->;(线段树维护区间合并线性基)
- “The creator of this fault did not specify a Reason” Exception
- 【CDN+】 一些常用的Linux命令,crontab+VI+Hive(持续更新)
- 前端工具-ES6相关工具
- php中的构造函数与析构函数