`
jianson_wu
  • 浏览: 65906 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

stament接口的三个方法:execute、executeupdate、executeuquery

SQL 
阅读更多
execute、executeQuery和executeUpdate之间的区别

JDBCTM中Statement接口提供的execute、executeQuery和executeUpdate之间的区别

       Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。
       方法executeQuery
       用于产生单个结果集的语句,例如 SELECT 语句。 被使用最多的执行 SQL 语句的方法是 executeQuery。这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。
       方法executeUpdate
       用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
       使用executeUpdate方法是因为在 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。你也可以从它的名字里看出,方法 executeUpdate 也被用于执行更新表 SQL 语句。实际上,相对于创建表来说,executeUpdate 用于更新表的时间更多,因为表只需要创建一次,但经常被更新。

       方法execute:
       用于执行返回多个结果集、多个更新计数或二者组合的语句。因为多数程序员不会需要该高级功能
       execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。当执行某个已存储过程或动态执行未知 SQL 字符串(即应用程序程序员在编译时未知)时,有可能出现多个结果的情况,尽管这种情况很少见。
       因为方法 execute 处理非常规情况,所以获取其结果需要一些特殊处理并不足为怪。例如,假定已知某个过程返回两个结果集,则在使用方法 execute 执行该过程后,必须调用方法 getResultSet 获得第一个结果集,然后调用适当的 getXXX 方法获取其中的值。要获得第二个结果集,需要先调用 getMoreResults 方法,然后再调用 getResultSet 方法。如果已知某个过程返回两个更新计数,则首先调用方法 getUpdateCount,然后调用 getMoreResults,并再次调用 getUpdateCount。
       对于不知道返回内容,则情况更为复杂。如果结果是 ResultSet 对象,则方法 execute 返回 true;如果结果是 Java int,则返回 false。如果返回 int,则意味着结果是更新计数或执行的语句是 DDL 命令。在调用方法 execute 之后要做的第一件事情是调用 getResultSet 或 getUpdateCount。调用方法 getResultSet 可以获得两个或多个 ResultSet 对象中第一个对象;或调用方法 getUpdateCount 可以获得两个或多个更新计数中第一个更新计数的内容。
       当 SQL 语句的结果不是结果集时,则方法 getResultSet 将返回 null。这可能意味着结果是一个更新计数或没有其它结果。在这种情况下,判断 null 真正含义的唯一方法是调用方法 getUpdateCount,它将返回一个整数。这个整数为调用语句所影响的行数;如果为 -1 则表示结果是结果集或没有结果。如果方法 getResultSet 已返回 null(表示结果不是 ResultSet 对象),则返回值 -1 表示没有其它结果。也就是说,当下列条件为真时表示没有结果(或没有其它结果):
((stmt.getResultSet() == null) && (stmt.getUpdateCount() == -1))
       如果已经调用方法 getResultSet 并处理了它返回的 ResultSet 对象,则有必要调用方法 getMoreResults 以确定是否有其它结果集或更新计数。如果 getMoreResults 返回 true,则需要再次调用 getResultSet 来检索下一个结果集。如上所述,如果 getResultSet 返回 null,则需要调用 getUpdateCount 来检查 null 是表示结果为更新计数还是表示没有其它结果。
       当 getMoreResults 返回 false 时,它表示该 SQL 语句返回一个更新计数或没有其它结果。因此需要调用方法 getUpdateCount 来检查它是哪一种情况。在这种情况下,当下列条件为真时表示没有其它结果:
((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1))
       下面的代码演示了一种方法用来确认已访问调用方法 execute 所产生的全部结果集和更新计数:

stmt.execute(queryStringWithUnknownResults);
while (true) {
int rowCount = stmt.getUpdateCount();
if (rowCount > 0) { // 它是更新计数
System.out.println("Rows changed = " + count);
stmt.getMoreResults();
continue;
}
if (rowCount == 0) { // DDL 命令或 0 个更新
System.out.println(" No rows changed or statement was DDL
command");
stmt.getMoreResults();
continue;
}
// 执行到这里,证明有一个结果集
// 或没有其它结果
ResultSet rs = stmt.getResultSet;
if (rs != null) {
. . . // 使用元数据获得关于结果集列的信息
while (rs.next()) {
. . . // 处理结果
stmt.getMoreResults();
continue;
}
break; // 没有其它结果
分享到:
评论

相关推荐

    JDBC中PreparedStatement接口提供的execute、executeQuery和executeUpdate之间的区别及用法

    JDBC 中的 PreparedStatement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。这些方法的使用取决于 SQL 语句所产生的内容。 _executeQuery 方法_ executeQuery 方法用于产生单个...

    PHP PDOStatement::execute讲解

    `PDOStatement::execute`是PDOStatement类的一个方法,用于执行预处理的SQL语句。这个方法适用于已经通过`PDO::prepare`创建的预处理语句对象。在PHP 5.1.0及以上版本以及PECL pdo 0.1.0及更高版本中,可以使用`...

    fetched-v10.17两个文件

    thingsboard编译错误 Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.0:npm (npm install) on project js-executor: Failed to run task: 'npm install' failed. 该错误如果是3.0上的,请将...

    Android-ExecuteShell是一个可以方便的执行shell命令的Android开源库

    ExecuteShell是一个专为Android开发者设计的开源库,它使得在Android应用程序中执行shell命令变得轻而易举。在Android系统中,有时我们需要执行一些低级的操作,如文件管理、系统调试或者权限控制,这时就需要借助...

    UE WebBrowser:Execute Javascript 调用测试网页

    测试

    execute、executeQuery和executeUpdate之间的区别

    在Java开发中,尤其涉及到数据库操作时,`execute`, `executeQuery` 和 `executeUpdate` 这三个方法是JDBC编程中非常重要的一部分。它们分别适用于不同类型的SQL语句,理解这些方法的区别对于正确高效地执行数据库...

    execute、executeQuery和executeUpdate之间的区别.doc

    在Java开发过程中,尤其是在处理数据库操作时,我们经常会遇到`execute`、`executeQuery`和`executeUpdate`这三个方法。这些方法均来自JDBC的`Statement`接口,用于执行SQL语句。了解它们之间的差异及正确使用方法...

    MySQL execute、executeUpdate、executeQuery三者的区别

    在MySQL和其他支持JDBC(Java Database Connectivity)的数据库系统中,`Statement`接口提供了三个用于执行SQL语句的方法:`execute()`, `executeUpdate()` 和 `executeQuery()`。这三个方法在处理不同类型的SQL语句...

    泛微OA RecordSet 文档

    * executeProcNew 方法:该方法是新的执行存储过程参数,需要三个参数:存储过程名称、连接池名称和入参参数集合。 2. 执行 SQL 语句:RecordSet 文档提供了多种执行 SQL 语句的方法,包括 executeSql、...

    connection对象的execute方法

    该方法的第一个参数是SQL语句,第二个参数是返回的记录集对象,第三个参数是执行类型(这里是 `adCmdTable`,表示执行的是一个表)。 4. **处理结果**: - 使用 `MoveNext` 方法移动到第一条记录。 - 如果 `EOF` ...

    ExecutorService的execute和submit方法

    `execute(Runnable command)`是`ExecutorService`最基础的执行方法,接收一个实现了`Runnable`接口的任务对象。这个方法会将任务添加到线程池的任务队列中,如果有空闲的工作线程,那么就会立即启动一个新的线程去...

    delphi接口统一方法

    2. **使用接口回调**: 在接口中定义一个回调方法,该方法接受另一个接口作为参数,这样可以在执行时动态地调用不同接口的方法。这在处理事件或者需要灵活的调用策略时非常有用。 ```delphi type ICallback = ...

    ASP中利用execute实现动态包含文件的方法

    方法: Execute(ASP代码) 例子:(vbCrLf为换行符) 代码如下:Execute(“Class clsAbc”&vbCrLf&”Public Function output”&vbCrLf&”Response.Write 123″&vbCrLf&”End Function”&vbCrLf&”End Class”)...

    Execute 方法 (ADO Connection)

    Execute 方法 (ADO Connection) Execute 方法是 ADO Connection 对象的一...Execute 方法 (ADO Connection) 是 ADO 中一个非常有用的方法,它提供了灵活的方式来执行各种类型的命令,并返回结果集或受影响的记录数目。

    Delphi:Execute SARL的Delphi源代码

    德尔斐 Execute SARL的Delphi源代码 如何学习Dephi? 前往并获得免费许可证! 专案 AciiShape 从ASCII模板中绘制矢量形状 收集测试 ...一个可以是他本人的TGraphiControl Execute.XML.Tree 一

    MapGuide Viewer API 中文版

    MapGuide Viewer API 是一个基于 MapGuide2009 的应用程序接口,提供了丰富的功能和方法供开发者使用。下面是对 MapGuide Viewer API 的详细介绍。 一、Form Frame 方法 Form Frame 方法提供了一些基本的表单操作...

    domino xapgesg开发 Execute Script

    `Execute Script` 操作包含一个 `script` 参数,该参数可以是以下三种类型之一: - `javascript`:表示要执行的 JavaScript 代码。 - `xpath`:不常用,通常用于 XML 处理。 - `null`(默认,用于 EL):表示要执行...

    Oracle相关接口使用方法

    本文将深入解析“Oracle相关接口使用方法”,基于标题、描述、标签及部分内容,详细阐述各接口的功能与使用场景,帮助读者全面理解并灵活运用。 #### 一、Environment接口 `Environment`接口用于创建Oracle环境上...

Global site tag (gtag.js) - Google Analytics