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. 代码的可读性和可维护性。
JDBC之Statement、PreparedStatement和CallableStatement的更多相关文章
- Statement, PreparedStatement和CallableStatement的区别
Statement用于执行不带参数的简单SQL语句,并返回它所生成的结果,每次执行SQL豫剧时,数据库都要编译该SQL语句. Satatement stmt = conn.getStatement() ...
- 执行对象Statement、PreparedStatement和CallableStatement详解 JDBC简介(五)
执行对象是SQL的执行者,SQL是“安排好的任务”,执行对象就是“实际工作的人”. 执行对象有三种: Statement.PreparedStatement和CallableStatement,他们都 ...
- Statement、PreparedStatement、CallableStatement的区别
此三个接口的声明如下: public interface Statement extends Wrapper, AutoCloseable public interface PreparedState ...
- java基础 JDBC & Statement & PreparedStatement
参考文章: http://blog.csdn.net/wang379275614/article/details/23393335 概念 JDBC-数据库连接,是由一些类和接口构成的API,是J2SE ...
- 执行对象Statement、PreparedStatement和CallableStatement详解
执行对象是SQL的执行者,SQL是"安排好的任务",执行对象就是"实际工作的人". 执行对象有三种: Statement.PreparedStatement和C ...
- 说说Statement、PreparedStatement和CallableStatement的异同(转)
1.Statement.PreparedStatement和CallableStatement都是接口(interface). 2.Statement继承自Wrapper.PreparedStatem ...
- Statement、 PreparedStatement 、CallableStatement 区别和联系
Statement. PreparedStatement .CallableStatement 区别和联系 1. Statement.PreparedStatement和CallableStateme ...
- JDBC的Statement对象
以下内容引用自http://wiki.jikexueyuan.com/project/jdbc/statements.html: 一旦获得了数据库的连接,就可以和数据库进行交互.JDBC的Statem ...
- jdbc执行Statement接口的步骤
jdbc执行Statement接口的步骤如下: 1)驱动注册程序: Class.forName(com.mysql.jdbc.Driver); 2)获取连接对象: Connection conn = ...
随机推荐
- [BZOJ] 地精部落
问题描述 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H 可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi,其中 Hi ...
- element中的表格处理:循环出表格数据
最近要做一个表格,但是为了方便维护,我们需要把表格数据循环出来,方便加减节点: <template> <el-table :data="tableData" st ...
- 英语单词composing
composing 来源——书籍Python.Crash.Course.2015.11 Using Individual Values from a List You can use individu ...
- CSS中的背景用法详解
background 属性是CSS中用于设置元素背景的属性,最简单的background属 性名,是针对背景若干设定的合并简写,最早的CSS只能使用单一背景图片,而在现在却可以设置多个背景图片.而不用 ...
- BZOJ 2286: [Sdoi2011]消耗战 虚树
Description 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军 ...
- 20180715-Java日期时间
import java.util.Date;public class DateDemo{ public static void main(String[] args){ //初始化Date对象 Dat ...
- Python 装饰器之 functools.wraps
在看 Bottle 代码中看见 functools.wraps 这种用法. def make_default_app_wrapper(name): """ Return ...
- Linux(RHEL7)下安装vsftp服务
1.安装vsftp(没有配置yum源的先配置yum源) yum install -y vsftpd 2.启动ftp服务 systemctl start vsftpd.service 3.打开防火墙 f ...
- vue对组件以数组方式赋值的问题
当从后台直接调接口返回数据 直接将数组array赋值给定义的变量,会导致组件无法更改其它值,例如多选框,多选下拉框,会导致无法选中其它的值,也无法取消当前已赋值的选中项 data() { return ...
- IntelliJ IDEA中创建xml文件
1.file—setting,左上角输入template, 2.在左侧栏找到File And Code Templates 3.中间选中Files 4.点击+号,添加模板 5.输入模板名字:Nam ...