36

我有一个与此方法相关的问题:st.execute(sql);其中 st 显然是一个 Statement 对象。直接来自这个oracle java 教程:

execute:如果查询返回的第一个对象是 ResultSet 对象,则返回 true。如果查询可以返回一个或多个 ResultSet 对象,请使用此方法。通过重复调用 Statement.getResutSet 来检索从查询返回的 ResultSet 对象。

一个或多个 ResultSet 对象”是什么意思?一旦获得了数组,如何管理它们ResultSet?并且st.executeQuery(sql)非常st.executeUpdate(sql)清楚。这不是(至少对我而言)它的目标st.execute(sql)也可以返回一个 int ,就好像它更新了一个表一样。

提前致谢

4

3 回答 3

20

boolean execute(): 执行这个Prepared Statement对象中的SQL语句,可以是任何一种SQL语句。

ResultSet executeQuery(): 执行这个Prepared Statement对象中的SQL查询,返回查询生成的ResultSet对象。

int executeUpdate(): 执行此Prepared Statement对象中的SQL语句,必须是SQL INSERT、UPDATE或DELETE语句;或不返回任何内容的 SQL 语句,例如 DDL 语句。

寻找此类问题答案的最佳位置是 Javadocs: 这里

于 2016-05-29T12:09:57.347 回答
15

“一个或多个 ResultSet 对象”是什么意思?

execute方法的 javadoc 是这样说的:

"执行给定的 SQL 语句,它可能会返回多个结果。在某些(不常见的)情况下,单个 SQL 语句可能会返回多个结果集和/或更新计数。通常您可以忽略这一点,除非您 (1) 执行存储过程您知道可能会返回多个结果,或者 (2) 您正在动态执行未知的 SQL 字符串。

这几乎解释了它。有时一个查询可以提供多个ResultSet.

如果是这样,一旦获得了 ResultSet 数组,如何管理它们?

我不确定你的意思,但是:

  • 您不能将它们作为一个数组获取:您必须一次获取一个,并且
  • 您可以将 ResultSets 放入数组中...

这不是(至少对我而言) st.execute(sql) 的目标,它也可以返回一个 int ,就好像它更新了一个表一样。

execute如果您不知道它是查询、更新(某种)……还是其他可能提供多个结果集的东西,则其用途之一是执行 SQL 语句。它是executeQuery()executeUpdate()...的概括

于 2013-05-18T15:17:24.587 回答
8

execute() :用于所有类型的 SQL 语句的方法,即返回布尔值 TRUE 或 FALSE。如果方法返回 TRUE,则返回 ResultSet 对象,FALSE 返回 int 值。

executeUpdate() :此方法用于执行 DML 语句(INSERT、UPDATE 和 DELETE),该语句返回 int 值,受影响的行数。

executeQuery() :此方法用于使用 SELECT 查询从数据库中检索数据。该方法返回根据查询返回数据的ResultSet对象。

于 2020-01-06T12:07:14.370 回答