Statement.execute(sql) vs executeUpdate(sql) and executeQuer



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

execute:如果查询返回的第一个对象是a,则返回trueResultSet对象。如果查询可以返回一个或更多ResultSet对象。获取返回的ResultSet对象通过重复调用Statement.getResutSet来查询。

"一个或多个ResultSet对象"是什么意思?一旦获得ResultSet阵列,如何可能管理它们?而st.executeQuery(sql)st.executeUpdate(sql)则很明显。这不是(至少对我来说)st.execute(sql)的目的,它也可以返回一个int,就好像它更新了一个表。

Thanks in advance

布尔执行():执行这个Prepared statement对象中的SQL语句,该对象可以是任何类型的SQL语句。

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

int executeUpdate (): 执行prepare statement对象中的SQL语句,该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对象,该对象根据查询返回数据。

相关内容

  • 没有找到相关文章

最新更新