Java Statement、Preparestatement和CallableStatement

Java Statement、Preparestatement和CallableStatementStatementPreparestatementCallableStatement

一、Statement、Preparestatement和CallableStatement都是接口。
在 Java™ Platform Standard Ed. 8 帮助文档中,

对Statement有如下解释:


Interface Statement

All Superinterfaces: AutoCloseable, Wrapper 
All Known Subinterfaces: CallableStatement, PreparedStatement

对Preparestatement有如下解释:


Interface PreparedStatement

All Superinterfaces: AutoCloseable, Statement, Wrapper 
All Known Subinterfaces: CallableStatement

对CallableStatement有如下解释

Interface CallableStatement

All Superinterfaces: AutoCloseable, PreparedStatement, Statement, Wrapper

可见,

CallableStatement继承自PreparedStatement
PreparedStatement继承自Statement
Statement继承自AutoCloseable, Wrapper

二、Statement、Preparestatement和CallableStatement的不同
Statement
The object used for executing a static SQL statement and returning the results it produces.

Statement 用来执行一条【静态】SQL语句,并且返回结果。但是,每条Statement语句只能返回【指定条件】的查找结果集。

Preparestatement
An object that represents a precompiled SQL statement.
A SQL statement is precompiled and stored in a PreparedStatement object. This object can then be used to efficiently execute this statement multiple times.

Preparestatement是预编译的,变成了【动态】执行。
在继承了Statement之后,添加了处理IN参数的方法。
通过接收的不同的参数,执行不同的指令,返回不同条件的结果集。

CallableStatement
The interface used to execute SQL stored procedures.
If used, the result parameter must be registered as an OUT parameter.

 CallableStatement也是预编译的。
 它通常是用来调用存储过程,一旦使用了它,结果部分必须注册为OUT参数。
 其在继承了Preparestatement之后,添加了处理OUT参数的方法。
 通过接收的不同的参数,执行不同的指令,返回不同条件的结果集。

三、Statement、Preparestatement和CallableStatement的不同和使用场景:

Statement

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

Preparestatement

1. 在执行可变参数的SQL时,PreparedStatement比Statement的效率高。
3. 对于多次重复执行的语句,使用PreparedStament效率会更高一点。

CallableStatement

在调用存储过程的时候使用,因为存储过程往往有输出参数。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/39115.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注