繁体   English   中英

Statement.execute(sql) 与 executeUpdate(sql) 和 executeQuery(sql)

[英]Statement.execute(sql) vs executeUpdate(sql) and executeQuery(sql)

我有一个与此方法相关的问题: 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 ,就好像它更新了一个表一样。

提前致谢

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

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

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

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

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

execute方法的 javadoc 是这样说的:

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

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM