标题：statement
概述
Statement 是 Java 执行数据库操作的一个重要方法，用于在已经建立数据库连接的基础上，向数据库发送要执行的SQL语句。
Statement对象，用于执行不带参数的简单SQL语句。
接口定义
---Wrapper接口是一系列方法的声明，是一些方法的特征的集合
所有已知子接口
CallableStatement, PreparedStatement
说明
用于执行静态 SQL 语句并返回它所生成结果的对象。
在默认情况下，同一时间每个 Statement 对象在只能打开一个 ResultSet 对象。因  创建SQL statement在执行sql中的流程此，如果读取一个 ResultSet 对象与读取另一个交叉，则这两个对象必须是由不同的 Statement 对象生成的。如果存在某个语句的打开的当前 ResultSet 对象，则 Statement 接口中的所有执行方法都会隐式关闭它。
Statement 对象用于将 SQL 语句发送到数据库中。实际上有三种 Statement 对象，它们都作为在给定连接上执行 SQL 语句的包容器：Statement、PreparedStatement（它从 Statement 继承而来）和 CallableStatement（它从 PreparedStatement 继承而来）。它们都专用于发送特定类型的 SQL 语句： Statement 对象用于执行不带参数的简单 SQL 语句；PreparedStatement 对象用于执行带或不带 IN 参数的预编译 SQL 语句；CallableStatement 对象用于执行对数据库已存在的存储过程的调用。
Statement 接口提供了执行语句和获取结果的基本方法。PreparedStatement 接口添加了处理 IN 参数的方法；而 CallableStatement 添加了处理 OUT 参数的方法。
有些 DBMS 将已存储过程中的每条语句视为独立的语句；而另外一些则将整个过程视为一个复合语句。在启用自动提交时，这种差别就变得非常重要，因为它影响什么时候调用 commit 方法。在前一种情况中，每条语句单独提交；在后一种情况中，所有语句同时提交。
字段摘要
static int CLOSE_ALL_RESULTS
该常量指示调用 getMoreResults 时应该关闭以前一直打开的所有 ResultSet 对象。
static int CLOSE_CURRENT_RESULT
该常量指示调用 getMoreResults 时应该关闭当前 ResultSet 对象。
static int EXECUTE_FAILED
该常量指示在执行批量语句时发生错误。
static int KEEP_CURRENT_RESULT
该常量指示调用 getMoreResults 时不会关闭当前 ResultSet 对象。
static int NO_GENERATED_KEYS
该常量指示生成的键应该不可用于获取。
static int RETURN_GENERATED_KEYS
该常量指示生成的键应该可用于获取。
static int SUCCESS_NO_INFO
该常量指示批量语句执行成功但不存在受影响的可用行数计数。
方法摘要
void addBatch(String sql)
将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中。
void cancel()
如果 DBMS 和驱动程序都支持中止 SQL 语句，则取消此 Statement 对象。
void clearBatch()
清空此 Statement 对象的当前 SQL 命令列表。
void clearWarnings()
清除在此 Statement 对象上报告的所有警告。
void close()
立即释放此 Statement 对象的数据库和 JDBC 资源，而不是等待该对象自动关闭时发生此操作。
boolean execute(String sql)
执行给定的 SQL 语句，该语句可能返回多个结果。
boolean execute(String sql, int autoGeneratedKeys)
执行给定的 SQL 语句（该语句可能返回多个结果），并通知驱动程序所有自动生成的键都应该可用于获取。
boolean execute(String sql, int[] columnIndexes)
执行给定的 SQL 语句（该语句可能返回多个结果），并通知驱动程序在给定数组中指示的自动生成的键应该可用于获取。
boolean execute(String sql, String[] columnNames)
执行给定的 SQL 语句（该语句可能返回多个结果），并通知驱动程序在给定数组中指示的自动生成的键应该可用于获取。
int[] executeBatch()
将一批命令提交给数据库来执行，如果全部命令执行成功，则返回更新计数组成的数组。
ResultSet executeQuery(String sql)
执行给定的 SQL 语句，该语句返回单个 ResultSet 对象。
int executeUpdate(String sql)
执行给定 SQL 语句，该语句可能为 INSERT、UPDATE 或 DELETE 语句，或者不返回任何内容的 SQL 语句（如 SQL DDL 语句）。
int executeUpdate(String sql, int autoGeneratedKeys)
执行给定的 SQL 语句，并用给定标志通知驱动程序由此 Statement 生成的自动生成键是否可用于获取。
int executeUpdate(String sql, int[] columnIndexes)
执行给定的 SQL 语句，并通知驱动程序在给定数组中指示的自动生成的键应该可用于获取。
int executeUpdate(String sql, String[] columnNames)
执行给定的 SQL 语句，并通知驱动程序在给定数组中指示的自动生成的键应该可用于获取。
Connection getConnection()
获取生成此 Statement 对象的 Connection 对象。
int getFetchDirection()
获取从数据库表获取行的方向，该方向是根据此 Statement 对象生成的结果集合的默认值。

int getFetchSize()
Statement 使用案例
1、创建 Statement 对象 
建立了到特定数据库的连接之后，就可用该连接发送 SQL 语句。Statement 对象用 Connection 的方法 createStatement 创建，如下列代码段中所示： 
Connection con = DriverManager.getConnection(url, "sunny", ""); 
Statement stmt = con.createStatement(); 
为了执行 Statement 对象，被发送到数据库的 SQL 语句将被作为参数提供给 Statement 的方法： 
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2"); 
2、使用 Statement 对象执行语句 
Statement 接口提供了三种执行 SQL 语句的方法：executeQuery、exe  通过工具来创建SQL statementcuteUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。 
方法 executeQuery 用于产生单个结果集的语句，例如 SELECT 语句。 
方法 executeUpdate 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL（数据定义语言）语句，例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数，指示受影响的行数（即更新计数）。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句，executeUpdate 的返回值总为零。 
方法 execute 用于执行返回多个结果集、多个更新计数或二者组合的语句。因为多数程序员不会需要该高级功能，所以本概述后面将在单独一节中对其进行介绍。 
执行语句的所有方法都将关闭所调用的 Statement 对象的当前打开结果集（如果存在）。这意味着在重新执行 Statement 对象之前，需要完成对当前 ResultSet 对象的处理。 
应注意，继承了 Statement 接口中所有方法的 PreparedStatement 接口都有自己的 executeQuery、executeUpdate 和 execute 方法。Statement 对象本身不包含 SQL 语句，因而必须给 Statement.execute 方法提供 SQL 语句作为参数。PreparedStatement 对象并不将 SQL 语句作为参数提供给这些方法，因为它们已经包含预编译 SQL 语句。CallableStatement 对象继承这些方法的 PreparedStatement 形式。对于这些方法的 PreparedStatement 或 CallableStatement 版本，使用查询参数将抛出 SQLException。 
3、语句完成 
当连接处于自动提交模式时，其中所执行的语句在完成时将自动提交或还原。语句在已执行且所有结果返回时，即认为已完成。对于返回一个结果集的 executeQuery 方法，在检索完 ResultSet 对象的所有行时该语句完成。对于方法 executeUpdate，当它执行时语句即完成。但在少数调用方法 execute 的情况中，在检索所有结果集或它生成的更新计数之后语句才完成。
关闭 Statement 对象
Statement 对象将由 Java 垃圾收集程序自动关闭。而作为一种好的编程风格，应在不需要 Statement 对象时显式地关闭它们。这将立即释放 DBMS 资源，有助于避免潜在的内存问题。

在线观看
.vedio-content{background:#fafafb;padding:6px 0}.vedio-content-ul{margin:0 3px;float:left;display:inline}.vedio-content-ul li{float:left;margin:0 6px;display:inline}.vedio-content-ul li .vedio-link{line-height:1.5;text-align:center;font-size:12px;width:121px;display:block;margin-top:5px}.vedio-content-ul li .pic-show{height:83px;position:relative;border:1px solid #ccc;margin-top:0}.vedio-content-ul li .pic-show:hover{border:1px solid #45a909}.vedio-content-ul li img{height:77px;width:115px;margin:3px}.vedio-content a{text-decoration:none}.vedio-content a:hover{text-decoration:underline}.vedio-content .v-icon{background:transparent url(http://img.baidu.com/img/baike/play.png);position:absolute;left:10px;bottom:10px;height:18px;width:28px}* html .vedio-content .v-icon{background:0;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.baidu.com/img/baike/play.png')}.vedio-content .vedio-foot{margin:10px 10px 2px;text-align:right;color:#999;font-size:12px}.vedio-content .vedio-foot a{background:transparent url(http://img.baidu.com/img/baike/douban.gif) no-repeat scroll 0 0;margin-bottom:-3px;height:25px;width:70px;display:inline-block;vertical-align:middle}.vedio-content .vedio-foot-sp{margin-right:12px}.vedio-content .vedio-foot-sp a{background:transparent url(http://img.baidu.com/img/baike/bgs4_new.png) no-repeat scroll 0 -290px!important;height:27px;width:74px;margin-left:5px;vertical-align:baseline}.movie-content ul{margin:6px 3px 0}.movie-content .vedio-foot{margin-top:-15px} statement以上内容来自于    扩展阅读：     1  http://jdk.java2000.net JAVA世纪网 JDK专版     2  http://www.java2000.net/doc/jdk6_cn/ SUN JDK6.0中文版     开放分类：  编程 JAVA SQL 教育 留学 社会 计算机 JDK