1.Statement、PreparedStatement和CallableStatement都是接口(interface)。 
2.Statement继承自Wrapper、PreparedStatement继承自Statement、CallableStatement继承自PreparedStatement。 
3. 
Statement接口提供了执行语句和获取结果的基本方法; 
PreparedStatement接口添加了处理 IN 参数的方法; 
CallableStatement接口添加了处理 OUT 参数的方法。 
4. 
a.Statement: 
普通的不带参的查询SQL;支持批量更新,批量删除; 
b.PreparedStatement: 
可变参数的SQL,编译一次,执行多次,效率高; 
安全性好,有效防止Sql注入等问题; 
支持批量更新,批量删除; 
c.CallableStatement: 
继承自PreparedStatement,支持带参数的SQL操作; 
支持调用存储过程,提供了对输出和输入/输出参数(INOUT)的支持;

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

PreparedStatement是预编译的,使用PreparedStatement有几个好处 
1. 在执行可变参数的一条SQL时,PreparedStatement比Statement的效率高,因为DBMS预编译一条SQL当然会比多次编译一条SQL的效率要高。 
2. 安全性好,有效防止Sql注入等问题。 
3.  对于多次重复执行的语句,使用PreparedStament效率会更高一点,并且在这种情况下也比较适合使用batch; 
4.  代码的可读性和可维护性。

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

说说Statement、PreparedStatement和CallableStatement的异同(转)的更多相关文章

  1. Statement, PreparedStatement和CallableStatement的区别

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

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

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

  3. Statement、PreparedStatement、CallableStatement的区别

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

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

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

  5. JDBC之Statement、PreparedStatement和CallableStatement

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

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

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

  7. java基础 JDBC & Statement & PreparedStatement

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

  8. Statement,PreparedStatement和CallableStatement的联系和区别

    联系: CallableStatement继承自PreparedSatement,PreparedStatement继承自Statement. 区别: 1:Statement 每次执行sql语句,数据 ...

  9. JDBC Statements, PreparedStatement和CallableStatement语句

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

随机推荐

  1. amqp事务

    摘要: 介绍confirm的工作机制.使用spring-amqp介绍事务以及发布确认的使用方式.因为事务以及发布确认是针对channel来讲,所以在一个连接中两个channel,一个channel可以 ...

  2. Build OpenCV text(OCR) module on windows

    Background. AOI software needs to use the OCR feature to recognize the texts on the chips. Because o ...

  3. DOM Document

    1.DOM Document对象 定义:每个载入浏览器的 HTML 文档都会成为 Document 对象.Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问. Docume ...

  4. C++ MFC打开文件的流程

    打开文件的步骤如下: 弹出打开文件对话框 -> 获取选择的文件,并将文件显示在视图中. 我们程序中经常需要定制的操作如下: 1. 定制弹出的文件对话框,例如需要修改打开文件的类型或扩展名 2. ...

  5. P4基函数

    July , P4 syms p1 p2 p3 phi(:,) = /*p1.*(*p1-).*(*p1-).*(*p1-); phi(:,) = /*p2.*(*p2-).*(*p2-).*(*p2 ...

  6. Android_Fragment(碎片)知识点讲解

    今天我们来了解下Android 中的fragment(碎片)这个东西. Fragment 从英文翻译而言是碎片,片段的意思.那么这个东西是什么,在Android 中有什么用呢? 一.概念 Fragme ...

  7. 使用git从服务器下载已存在的项目文件

    在项目所在路径下输入: git remote -v 获得项目在服务器下的路径如下: origin ssh://git@ygl-redis:300/home/git/perfectunits-iphon ...

  8. Unity Application 前后台切换调用关系

    [Unity Application 前后台切换调用关系] http://blog.csdn.net/aa4790139/article/details/48087877

  9. python Day01

    Python Day01 Python 简介 介绍 Python 是一种面向对象.直译式的计算机程序设计语言,也是一种功能强大的通用型语言,已经有将近二十年的发展历史,成熟稳定.包含了一组完善而且容易 ...

  10. CTO对话:云端融合下的移动技术创新

    云端融合真的来了?快听CTO们怎么讲云端融合下,技术创新怎么破? 快听CTO箴言  云喊了很多年,对于很多普通的技术人,心中有很多疑问:云端融合到底意味着什么,对公司的技术体系有什么影响,未来又会走向 ...