关系与区别

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

Statement

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

2、Statement继承自Wrapper

3、普通的不带参的查询SQL;支持批量更新,批量删除;

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

CallableStatement

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

2、继承自PreparedStatement,支持带参数的SQL操作; 
3、支持调用存储过程,提供了对输出和输入/输出参数(INOUT)的支持;

  

PreparedStatement

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

2、PreparedStatement继承自Statement

3、可变参数的SQL,编译一次,执行多次,效率高; 
4、安全性好,有效防止Sql注入等问题; 
5、支持批量更新,批量删除;

6. 在执行可变参数的一条SQL时,PreparedStatement比Statement的效率高,因为DBMS预编译一条SQL当然会比多次编译一条SQL的效率要高。 
7  对于多次重复执行的语句,使用PreparedStament效率会更高一点,并且在这种情况下也比较适合使用batch; 
8.  代码的可读性和可维护性。 

注: 
executeQuery:返回结果集(ResultSet)。 
executeUpdate: 执行给定SQL语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句, 
或者不返回任何内容的SQL语句(如 SQL DDL 语句)。 
execute: 可用于执行任何SQL语句,返回一个boolean值, 
表明执行该SQL语句是否返回了ResultSet。如果执行后第一个结果是ResultSet,则返回true,否则返回false。 

prepareStatament和Statement和callableStatement的区别的更多相关文章

  1. Statement和PreparedStatement的区别; 什么是SQL注入,怎么防止SQL注入?

    问题一:Statement和PreparedStatement的区别 先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接 ...

  2. Statement和PreparedStatement的区别; 什么是SQL注入,怎么防止SQL注入? (转)

    问题一:Statement和PreparedStatement的区别 先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接 ...

  3. JDBC与Statement和PreparedStatement的区别

    一.先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.具体步骤: 1.首先导入 ...

  4. JDBC中的Statement和PreparedStatement的区别

    JDBC中的Statement和PreparedStatement的区别  

  5. statement preparestatement CallableStatement

    大家都知道Statement.PrepareStatement 和CallableStatement 对象,其实它们是interface,为什么JDBC2.0中要提供这三个对象呢?对于Statemen ...

  6. Statement与PreparedStatement的区别

    Statement与PreparedStatement的区别   PreparedStatement预编译SQL语句,性能好. PreparedStatement无序拼接SQL语句,编程更简单. Pr ...

  7. 浅析Statement和PreparedStatement的区别

    当我们使用java程序来操作sql server时会使用到Statement和PreparedStatement,俩者都可以用于把sql语句从java程序中发送到指定数据库,并执行sql语句.那么如何 ...

  8. Statement、PreparedStatement、CallableStatement的区别

    此三个接口的声明如下: public interface Statement extends Wrapper, AutoCloseable public interface PreparedState ...

  9. Statement, PreparedStatement和CallableStatement的区别

    Statement用于执行不带参数的简单SQL语句,并返回它所生成的结果,每次执行SQL豫剧时,数据库都要编译该SQL语句. Satatement stmt = conn.getStatement() ...

随机推荐

  1. tcp头和ip头 图文简介和简要说明

    https://blog.csdn.net/soullsj/article/details/80304124

  2. Python + Selenium 基础篇 - 打开和关闭浏览器

    1.首先要下载浏览器对应的driver,并放到你的python安装目录 Chrome浏览器(chromedriver): http://npm.taobao.org/mirrors/chromedri ...

  3. IBM-内存管理内幕 动态分配的选择、折衷和实现

    https://www.ibm.com/developerworks/cn/linux/l-memory/ 为什么必须管理内存 内存管理是计算机编程最为基本的领域之一.在很多脚本语言中,您不必担心内存 ...

  4. oracle 11g 将非分区表转换为分区表在线重定义

    --操作的用户需要有以下的权限 GRANT CONNECT, RESOURCE TO CMIGDW; GRANT EXECUTE ON DBMS_REDEFINITION TO CMIGDW; GRA ...

  5. sed替换命令

    sed替换命令 语法为: sed ' [ address-range | pattern-range ] s/original-string/replacement-string/[substitut ...

  6. 数据库的ACID跟事务隔离级别

    摘抄:http://blog.csdn.net/shuaihj/article/details/14163713 ------------------------------------------- ...

  7. 斗鱼连接弹幕Demo_pythonC#

    简明扼要的说下, 就两个线程,一个 负责收数据,一个负责发心跳包. 步骤如下, 进程1,调用 发包函数,发送连接请求,然后再发送 获取弹幕类型请求,就一直循环接收数据. 进程2,循环函数,每隔45秒向 ...

  8. springboot2.x如何添加事务

    什么时候需要添加事务呢?一般情况下,如果该方法有两条SQL语句或者以上都需要添加(个人感觉:)). 首先需要在我们的启动类加上 @EnableTransactionManagement //开启事务管 ...

  9. Win10 手工安装.netframework3.5

    1.装载win10/win8...等镜像文件 2.cmd命令管理员身份运行 3.输入命令:C:\Windows\system32>dism.exe /online /enable-feature ...

  10. P2626 斐波那契数列(升级版)

    题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数). 题目描述 ...