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

11 篇文章 0 订阅

在开发过程中,我们常需要对数据库进行操作,就避免不了执行各种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(内存不足)。

  • 25
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值