execute(),executeQuery(),executeUpdate()和executeBatch()的使用与区别

Posted code_____monkey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了execute(),executeQuery(),executeUpdate()和executeBatch()的使用与区别相关的知识,希望对你有一定的参考价值。

在开发过程中,我们常需要对数据库进行操作,就避免不了执行各种sql语句,就会遇到execute(),executeQuery()和executeUpdate()这个三个执行sql语句的方法,如果使用不当,就会导致我们执行报错,如:update语句需要executeUpdate()方法来执行,如果你选择使用了executeQuery(),系统就会提示错误,执行失败。当我们对sql语句进行批量处理的时候,就会用到executeBatch()方法。
Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate和 execute。项目工程中要选择哪个要根据实际的Sql语句来进行选择。

一、execute()方法:
用来执行返回多个结果集的sql语句,即当执行某个已存储过程或动态执行未知 SQL 字符串(即应用程序程序员在编译时未知)时,有可能出现多个结果的情况。
假定已知某个过程返回两个结果集,则在使用方法 execute 执行该过程后,必须调用方法 getResultSet 获得第一个结果集,然后调用适当的 getXXX 方法获取其中的值。要获得第二个结果集,需要先调用 getMoreResults 方法,然后再调用 getResultSet 方法。
如果已知某个过程返回两个更新计数,则首先调用方法 getUpdateCount,然后调用 getMoreResults,并再次调用 getUpdateCount。对于不知道返回内容,则情况更为复杂。如果结果是 ResultSet 对象,则方法 execute 返回 true;如果结果是 Java int,则返回 false。如果返回 int,则意味着结果是更新计数或执行的语句是 DDL 命令。在调用方法 execute 之后要做的第一件事情是调用 getResultSet 或 getUpdateCount。调用方法 getResultSet 可以获得两个或多个 ResultSet 对象中第一个对象;或调用方法 getUpdateCount 可以获得两个或多个更新计数中第一个更新计数的内容。这里写图片描述

二、executeQuery()方法:
用于产生单个结果集的语句,例如 SELECT 语句。 被使用最多的执行 SQL 语句的方法是 executeQuery。如果执行存储过程将产生大于 1 的更新计数,或生成多个结果集,则请使用 execute 方法执行存储过程。

三、executeUpdate():
用于执行 INSERT、UPDATE 、 DELETE 语句或不返回任何内容的 SQL 语句,如: SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。executeUpdate 将返回在 MERGE 操作中更新的正确行数。
executeUpdate()注重及时性,每写一条sql语句就发送给数据库保存起来,没有缓存,这样频繁操作数据库效率非常低。
注意:
addBatch()和executeUpdate()是用来执行数据插入的,不同就是一个批量,一个单个插入,两者不要在一起使用。
这里写图片描述

 

四、executeBatch():
向数据库提交要运行的一批命令。如果所有命令都成功运行,则返回一个更新计数数组。executeBatch 方法由 java.sql.Statement 接口中的 executeBatch 方法指定。向数据库提交命令后,此方法将清除批中的所有命令。
通常是通过先使用addBatch()来缓存数据,将多条sql语句缓存起来,再通过executeBatch()方法一次性发给数据库,提高执行效率。
注意:
使用addBatch()缓存数据时要在循环中设置条件,当循环达到指定次数后执行executeBatch(),将缓存中的sql全部发给数据库,然后执行clearBatch()清楚缓存,否则数据过大是会出现OutOfMemory(内存不足)。
————————————————
版权声明:本文为CSDN博主「W-大泡泡」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011389474/article/details/52818670

以上是关于execute(),executeQuery(),executeUpdate()和executeBatch()的使用与区别的主要内容,如果未能解决你的问题,请参考以下文章

execute,executeQuery,executeUpdate

execute,executeQuery,executeUpdate的区别是什么?

execute(),executeQuery(),executeUpdate()和executeBatch()的使用与区别

executeexecuteQuery和executeUpdate之间的区别

executeexecuteQuery和executeUpdate之间的区别

转载----executeexecuteQuery和executeUpdate之间的区别