联系:

CallableStatement继承自PreparedSatement,PreparedStatement继承自Statement。

区别:

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

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

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

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

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

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

3:CallableStatement接口扩展PreparedStatement,用来调用存储过程,它提供了对输出和输入/输出参数的支持。CallableStatement 接口还具有对 PreparedStatement 接口提供的输入参数的支持。

  Statement 对象用于将 SQL 语句发送到数据库中。
    实际上有三种 Statement 对象,它们都作为在给定连接上执行  SQL语句的包容器:     
  
  
  1. Statement、
  2. PreparedStatement(它从 Statement  继承而来)和
  3. CallableStatement(它从 PreparedStatement 继承而来)。

它们都专用于发送特定类型的 SQL  语句:

  1. Statement 对象用于执行不带参数的简单 SQL 语句;
  2. PreparedStatement 对象用于执行带或不带 IN参数的预编译  SQL  语句;
  3. CallableStatement 对象用于执行对数据库已存储过程的调用。
  • Statement 接口提供了执行语句和获取结果的基本方法。
  • PreparedStatement 接口添加了处理 IN 参数的方法;
  • 而CallableStatement 添加了处理 OUT 参数的方法。

Statement,PreparedStatement和CallableStatement的联系和区别的更多相关文章

  1. Statement, PreparedStatement和CallableStatement的区别

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

  2. Statement、 PreparedStatement 、CallableStatement 区别和联系

    Statement. PreparedStatement .CallableStatement 区别和联系 1. Statement.PreparedStatement和CallableStateme ...

  3. Statement、PreparedStatement、CallableStatement的区别

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

  4. 执行对象Statement、PreparedStatement和CallableStatement详解 JDBC简介(五)

    执行对象是SQL的执行者,SQL是“安排好的任务”,执行对象就是“实际工作的人”. 执行对象有三种: Statement.PreparedStatement和CallableStatement,他们都 ...

  5. 执行对象Statement、PreparedStatement和CallableStatement详解

    执行对象是SQL的执行者,SQL是"安排好的任务",执行对象就是"实际工作的人". 执行对象有三种: Statement.PreparedStatement和C ...

  6. 说说Statement、PreparedStatement和CallableStatement的异同(转)

    1.Statement.PreparedStatement和CallableStatement都是接口(interface). 2.Statement继承自Wrapper.PreparedStatem ...

  7. JDBC之Statement、PreparedStatement和CallableStatement

    JDBC提供了Statement.PreparedStatement和CallableStatement三种方式来执行查询语句,其中Statement用于通用查询,PreparedStatement用 ...

  8. java基础 JDBC & Statement & PreparedStatement

    参考文章: http://blog.csdn.net/wang379275614/article/details/23393335 概念 JDBC-数据库连接,是由一些类和接口构成的API,是J2SE ...

  9. JDBC Statements, PreparedStatement和CallableStatement语句

    当获得了与数据库的连接后,就可以与数据库进行交互了. JDBC Statement,CallableStatement和PreparedStatement接口定义了可用于发送SQL或PL/SQL命令, ...

随机推荐

  1. 2016百度之星-初赛(Astar Round2A)AII X

    Problem Description F(x,m) 代表一个全是由数字x组成的m位数字.请计算,以下式子是否成立: F(x,m) mod k ≡ c Input 第一行一个整数T,表示T组数据. 每 ...

  2. java 8-8 接口的练习

    /* 老师和学生案例,加入抽烟的额外功能 分析: 老师和学生都具有共同的变量:名字,年龄 共同的方法:吃饭,睡觉 老师有额外的功能:抽烟(设定个接口),部分抽烟 有共同的变量和方法,设一个父类:per ...

  3. Pro Git(中文版)

    Pro Git(中文版) 返回 Git @ OSC 目录 1.起步 1.1 关于版本控制 1.2 Git 简史 1.3 Git 基础 1.4 安装 Git 1.5 初次运行 Git 前的配置 1.6 ...

  4. [原创]gerrit上分支操作记录(创建分支、删除分支)

    Git分支对于一个项目的代码管理而言,是十分重要的! 许多久用git的朋友可能已经掌握的很牢固了,但对于一些初涉git的童鞋来说,可能还不是很熟悉. 在此,我将自己的一些操作经历做一梳理,希望能帮助到 ...

  5. 024医疗项目-模块二:药品目录的导入导出-HSSF导入类的学习

    我们之前学习了怎么把数据的数据导出来保存到Excle中,这篇文章我们学习怎么Excel数据导出然后插入到数据库中. 我们先学习HSSF怎么用来导出数据. 看官方教程步骤如下: 第一步: 创建一个wor ...

  6. WPF用ShowDialog()弹出窗体时控制该窗体的显示位置,并传值回父窗体

    原文:http://blog.csdn.net/kiss0622/article/details/5852153 方法一: 1.父窗口代码 Window1.xaml.cs private void B ...

  7. C#泛型-模板特化

    class TClass<T, K> { } class SubTClass<T, C, K> : TClass<Char, K> { } class SubTCl ...

  8. [转]C#使用Log4Net记录日志

    第一步:下载Log4Net 下载地址:http://logging.apache.org/log4net/download_log4net.cgi 把下载的  log4net-1.2.11-bin-n ...

  9. 即学即会 Java 程序设计基础视频教程(100课整)无水印版

    课程总共包含100个课时,总授课长达27多个小时,内容覆盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟通过本套视频的学习,学员能够快速的掌握java编程语言,成为java高手. 课程目录:课时1 ...

  10. Java 环境下使用 AES 加密的特殊问题处理

    在 Java 环境下使用 AES 加密,在密钥长度和字节填充方面有一些比较特殊的处理. 1. 密钥长度问题 默认 Java 中仅支持 128 位密钥,当使用 256 位密钥的时候,会报告密钥长度错误 ...