Statement 对象

转载 2007年09月18日 08:40:00
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、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。

  3、语句完成

  当连接处于自动提交模式时,其中所执行的语句在完成时将自动提交或还原。语句在已执行且所有结果返回时,即认为已完成。对于返回一个结果集的 executeQuery 方法,在检索完 ResultSet 对象的所有行时该语句完成。对于方法 executeUpdate,当它执行时语句即完成。但在少数调用方法 execute 的情况中,在检索所有结果集或它生成的更新计数之后语句才完成。

   概述

  Statement 对象用于将 SQL 语句发送到数据库中。实际上有三种 Statement 对象,它们都作为在给定连接上执行 SQL 语句的包容器:Statement、PreparedStatement(它从 Statement 继承而来)和 CallableStatement(它从 PreparedStatement 继承而来)。它们都专用于发送特定类型的 SQL 语句: Statement 对象用于执行不带参数的简单 SQL 语句;PreparedStatement 对象用于执行带或不带 IN 参数的预编译 SQL 语句;CallableStatement 对象用于执行对数据库已存储过程的调用。

  Statement 接口提供了执行语句和获取结果的基本方法。PreparedStatement 接口添加了处理 IN 参数的方法;而 CallableStatement 添加了处理 OUT 参数的方法。

有些 DBMS 将已存储过程中的每条语句视为独立的语句;而另外一些则将整个过程视为一个复合语句。在启用自动提交时,这种差别就变得非常重要,因为它影响什么时候调用 commit 方法。在前一种情况中,每条语句单独提交;在后一种情况中,所有语句同时提交。

  4、关闭 Statement 对象

  Statement 对象将由 Java 垃圾收集程序自动关闭。而作为一种好的编程风格,应在不需要 Statement 对象时显式地关闭它们。这将立即释放 DBMS 资源,有助于避免潜在的内存问题。
 

JDBC连接数据库中的Statement对象

前言     上篇博客说到JDBC连接数据库的步骤,其中涉及到一个很重要的对象,就是Statement。它是Java执行数据库操作的一个重要步骤,可以执行一些简单的SQL语句,从而完成对数据...
  • u013038861
  • u013038861
  • 2016年03月06日 15:07
  • 2233

关于Statement对象

http://hi.baidu.com/yulongxue/item/15461edd1123f74fddf9be86 关于Statement对象,它是用于将SQL语句发送到数据库中。三种Statem...
  • wuxinliulei
  • wuxinliulei
  • 2013年08月06日 10:08
  • 1078

statement与resultset的对应关系

问题描述: 1,Connection是Statement的工厂,一个Connection可以生产多个Statement。 2,Statement是ResultSet的工厂,一个Statement却只...
  • hanghangde
  • hanghangde
  • 2015年12月06日 21:55
  • 1715

关于Statement对象

http://hi.baidu.com/yulongxue/item/15461edd1123f74fddf9be86 关于Statement对象,它是用于将SQL语句发送到数据库中。三种Statem...
  • wuxinliulei
  • wuxinliulei
  • 2013年08月06日 10:08
  • 1078

mysql jdbc驱动源码分析(获取Statement对象)

在前面的文章中我们分析了获取Connection 对象的代码,下面来看看获取Statement的源码: ConnectionImpl类的createStatement() 方法获取Statement实...
  • QH_JAVA
  • QH_JAVA
  • 2015年12月28日 22:06
  • 1006

JDBC连接数据库中的Statement对象

前言     上篇博客说到JDBC连接数据库的步骤,其中涉及到一个很重要的对象,就是Statement。它是Java执行数据库操作的一个重要步骤,可以执行一些简单的SQL语句,从而完成对数据...
  • u013038861
  • u013038861
  • 2016年03月06日 15:07
  • 2233

jdbc使用 Statement 接口实现添加数据操作(使用面向对象和数据库连接工具类)

jdbc使用 Statement 接口实现添加数据操作(使用面向对象和数据库连接工具类)...
  • wang_shuai_long
  • wang_shuai_long
  • 2016年06月24日 20:33
  • 650

遗忘的Statement对象

最近在修改多线程批量生成静态报表相关问题时,遇到一个问题,因此回顾一下遗忘的statement对象。 问题描述: 在获取待生成的静态报表时采用连接数据库后创建了Statement对象并调用exec...
  • MCpang
  • MCpang
  • 2011年09月23日 21:57
  • 1036

深入理解Statement、PreparedStatement对象

http://www.cnblogs.com/sunwei2012/archive/2010/12/14/1905371.html   一句话: prepareStatement可以替换变量 ,批...
  • jiafu1115
  • jiafu1115
  • 2011年10月25日 10:32
  • 454

java操作数据库---Statement对象和preparedStatement对象的区别(二)

在java操作数据库的程序中,通过Statement对象和preparedStatement对象都可以去调用execute()等操作数据库的操作,那么这两个对象有什么区别呢? (一)两者的关...
  • yi_ya
  • yi_ya
  • 2014年12月30日 17:31
  • 400
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Statement 对象
举报原因:
原因补充:

(最多只允许输入30个字)