一、建立 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");
二、使用 Statement 对象执行语句
Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 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。
三、语句完成
当链接处于自动提交模式时,其中所执 行的语句在完成时将自动提交或还原。语句在已执行且全部结果返回时,即认为已完成。对于返回一个结果集的 executeQuery 方法,在检索完 ResultSet 对象的全部行时该语句完成。对于方法 executeUpdate,当它执行时语句即完成。但在少数调用方法 execute 的状况中,在检索全部结果集或它生成的更新计数以后语句才完成。程序员
Statement 接口提供了执行语句和获取结果的基本方法。PreparedStatement 接口添加了处理 IN 参数的方法;而 CallableStatement 添加了处理 OUT 参数的方法。
有些 DBMS 将已存储过程当中的每条语句视为独立的语句;而另一些则将整个过程视为一个复合语句。在启用自动提交时,这种差异就变得很是重要,由于它影响何时调用 commit 方法。在前一种状况中,每条语句单独提交;在后一种状况中,全部语句同时提交。
四、关闭 Statement 对象
Statement 对象将由 Java 垃圾收集程序自动关闭。而做为一种好的编程风格,应在不须要 Statement 对象时显式地关闭它们。这将当即释放 DBMS 资源,有助于避免潜在的内存问题。数据库