`
robinsoncrusoe
  • 浏览: 749012 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

编程statement

    博客分类:
  • JAVA
阅读更多
用于执行静态 SQL 语句并返回它所生成结果的对象。
在默认情况下,同一时间每个 Statement 对象在只能打开一个 ResultSet 对象。因此,如果读取一个 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 对象。
p;    该常量指示调用 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[] columnIndex
es)
          执行给定的 SQL 语句,并通知驱动程序在给定数组中指示的自动生成的键应该可用于获取。

int         executeUpdate(String sql, String[] columnNames)
          执行给定的 SQL 语句,并通知驱动程序在给定数组中指示的自动生成的键应该可用于获取。

Connection         getConnection()
          获取生成此 Statement 对象的 Connection 对象。

int         getFetchDirection()
          获取从数据库表获取行的方向,该方向是根据此 Statement 对象生成的结果集合的默认值。

int         getFetchSize()
          获取结果集合的行数,该数是根据此 Statement 对象生成的 ResultSet 对象的默认获取大小。

ResultSet         getGeneratedKeys()
          获取由于执行此 Statement 对象而创建的所有自动生成的键。

int         getMaxFieldSize()
          获取可以为此 Statement 对象所生成 ResultSet 对象中的字符和二进制列值返回的最大字节数。

int         getMaxRows()
          获取由此 Statement 对象生成的 ResultSet 对象可以包含的最大行数。

boolean         getMoreResults()
          移动到此 Statement 对象的下一个结果,如果其为 ResultSet 对象,则返回 true,并隐式关闭利用方法 getResultSet 获取的所有当前 ResultSet 对象。

boolean         getMoreResults(int current)
       将此 Statement 对象移动到下一个结果,根据给定标志指定的指令处理所有当前 ResultSet 对象;如果下一个结果为 ResultSet 对象,则返回 true。

int         getQueryTimeout()
          获取驱动程序等待 Statement 对象执行的秒数。

ResultSet         getResultSet()
          以 ResultSet 对象的形式获取当前结果。

int         getResultSetConcurrency()
          获取此 Statement 对象生成的 ResultSet 对象的结果集合并发性。

int         getResultSetHoldability()
          获取此 Statement 对象生成的 ResultSet 对象的结果集合可保存性。

int         getResultSetType()
          获取此 Statement 对象生成的 ResultSet 对象的结果集合类型。

int         getUpdateCount()
          以更新计数的形式获取当前结果;如果结果为 ResultSet 对象或没有更多结果,则返回 -1。

SQLWarning         getWarnings()
          获取此 Statement 对象上的调用报告的第一个警告。

boolean         isClosed()
          获取是否已关闭了此 Statement 对象。

boolean         isPoolable()
          返回指示 Statement 是否是可池化的值。

void         setCursorName(S
tring name)
          将 SQL 指针名称设置为给定的 String,后续 Statement 对象的 execute 方法将使用此字符串。

void         setEscapeProcessing(boolean enable)
          将转义处理设置为开或关。

void         setFetchDirection(int direction)
          向驱动程序提供关于方向的提示,在使用此 Statement 对象创建的 ResultSet 对象中将按该方向处理行。

void         setFetchSize(int rows)
          为 JDBC 驱动程序提供一个提示,它提示此 Statement 生成的 ResultSet 对象需要更多行时应该从数据库获取的行数。

void         setMaxFieldSize(int max)
          设置此 Statement 对象生成的 ResultSet 对象中字符和二进制列值可以返回的最大字节数限制。

void         setMaxRows(int max)
          将此 Statement 对象生成的所有 ResultSet 对象可以包含的最大行数限制设置为给定数。

void         setPoolable(boolean poolable)
          请求将 Statement 池化或非池化。

void         setQueryTimeout(int seconds)
          将驱动程序等待 Statement 对象执行的秒数设置为给定秒数。

Statement 使用案例[编辑本段]1、创建 Statement 对象

  建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句。Statement 对象用 Connection 的方法 createStatement 创建,如下列代码段中所示:

Connection con = DriverManager.getConnection(url, "sunny", &quo
t;");
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 的情况中,在检索所有结果集或它生成的更新计数之后语句才完成。


  4、关闭 Statement 对象

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


http://www.cd2.cn/Technology/2008-09-15/51665_8.htm
分享到:
评论

相关推荐

    statement

    标题“statement”可能指的是某个特定的编程语句、框架特性或者是软件开发中的声明部分,但没有具体的描述,我们只能从标签和可能的博客链接中推测其内容。标签中提到的“源码”和“工具”暗示了这个话题可能与理解...

    Statement Tracer for ADO

    《Statement Tracer for ADO:洞察ADO SQL执行的利器》 在信息技术领域,数据库操作是不可或缺的一部分,而ADO(ActiveX Data Objects...无论是初学者还是经验丰富的开发者,都能从中受益,提升自己的数据库编程技能。

    JDBC PrepareStatement 使用(附各种场景 demo)

    在Java编程中,JDBC(Java Database Connectivity)是用于与各种数据库进行交互的一套标准接口。PrepareStatement是JDBC提供的一种预编译的SQL语句,它可以提高数据库操作的效率和安全性。本资源主要涵盖了使用JDBC ...

    各种编程语言集合各种编程语言集合

    在IT领域,编程语言是构建软件、应用和服务的基础工具。编程语言集合涵盖了广泛的技术和工具,每种语言都有其特定的用途和优势。本资源包包含的两个文件,"JDBC API数据库编程实作教材ss.pdf" 和 "Testsadasd.rar",...

    Go To Statement Considered Harmful

    Dijkstra 在《ACM通讯》上发表了一篇题为“Go To Statement Considered Harmful”的文章,这篇文章引起了程序设计界长达数十年的争论。Dijkstra 认为 goto 语句是一种导致程序结构混乱的根源,并提出了结构化编程的...

    JDBC(用PrepareStatement实现)

    **JDBC(用PrepareStatement实现)** ...综上,使用PreparedStatement是Java数据库编程中的最佳实践之一,它提供了一种高效、安全的方式来执行SQL语句。在实际项目中,我们应该充分利用这一特性来优化我们的数据库操作。

    西门子S7-1200 PLC编程及使用指南.rar

    2. Statement List(STL):语句表,类似高级语言的文本形式。 3. Structured Text(ST):结构化文本,类似于Pascal或C语言。 4. Function Block Diagram(FBD):功能块图,通过图形表示功能块的连接。 四、编程...

    JDBC编程!java中的数据库连接!源代码!适合初学者!

    3. 创建Statement对象:通过Connection对象的createStatement()方法创建Statement对象,用于执行SQL语句。 4. 执行SQL语句:通过Statement对象的executeQuery()或executeUpdate()方法执行SQL语句。executeQuery()...

    三菱FX2N编程软件

    这款软件支持多种编程语言,包括梯形图(Ladder Diagram)、语句表(Statement List)以及功能块图(Function Block Diagram),满足不同用户的需求和编程习惯。 1. **梯形图编程**:梯形图是PLC编程中最常见的一种...

    c++编程思想.txt

    根据提供的文件信息,我们可以总结并提炼出以下与C++编程相关的知识点: ### 1. 外部函数(extern) 在C++中,`extern`关键字用于声明一个变量或函数是在其他地方定义的。例如,在代码片段中出现了 `extern h:y&{`...

    三菱ST语言编程

    ### 三菱ST语言编程知识点详解 #### 一、ST语言简介 ST语言(Structured Text,结构化文本)是一种用于可编程逻辑控制器(PLC)编程的高级编程语言,属于IEC 61131-3标准定义的五种编程语言之一。它采用类似于...

    java数据库连接PrepareStatement

    在 Java 的数据库编程中,`PreparedStatement` 是一个非常重要的类,它继承自 `Statement` 类,并提供了更高级的功能来处理 SQL 语句,尤其是在处理参数化查询时更为高效和安全。下面我们将详细介绍 `...

    计算机编程英语词汇 计算机编程及常用术语英语词汇大全

    3. **控制结构**:包括条件语句(Conditional Statements)如`if-else`,循环(Loops)如`for`、`while`,以及开关语句(Switch Statement)。 4. **函数与方法**:Function、Method是程序中的可重用代码块,它们...

    怎样实现关闭connection时自动关闭Statement和ResultSet (下篇)

    在Java的数据库编程中,管理数据库连接、Statement对象和ResultSet对象是至关重要的。这篇博客的下篇主要讨论了如何在关闭Connection时自动关闭Statement和ResultSet,以确保资源的有效释放,防止内存泄漏。以下是对...

    STEP5编程软件

    1. **编程**:STEP5提供了直观的编程界面,支持Ladder Logic(梯形图)、 Statement List(语句表)等编程语言,便于用户根据需求编写控制程序。 2. **模拟与测试**:用户可以在软件内对编写的程序进行模拟运行和...

    西门子S5编程实例

    西门子S5的编程语言主要基于梯形图(Ladder Diagram, LD)和语句表(Statement List, STL)。在提供的"zhijiahanjieji"文件中,我们可以期待找到这些编程示例。梯形图是一种直观的图形化编程方式,模仿继电器电路,...

    语言的 using statement 与资源释放

    ### 使用 Using Statement 进行资源释放 在 .NET 框架中,资源管理是非常重要的一个...通过将资源管理逻辑封装在 `using` 块中,不仅可以简化代码,还可以避免许多常见的编程错误,从而提高应用程序的稳定性和性能。

    Java数据库编程案例2

    在Java编程领域,数据库操作是不可或缺的一部分,尤其是在开发企业级应用时。本案例"Java数据库编程案例2"着重于讲解如何在Java环境中与各种数据库进行交互,包括建立连接、执行SQL语句、处理结果集以及关闭连接等...

    西门子S7-300/400+PLC编程指南

    在编程方面,西门子S7 PLCs支持多种编程语言,包括梯形图(Ladder Diagram, LD)、语句表(Statement List, STL)、结构文本(Structured Text, ST)以及功能块图(Function Block Diagram, FBD)。这些编程语言符合...

Global site tag (gtag.js) - Google Analytics