我有一个与此方法相关的问题:st.execute(sql);
其中st显然是Statement对象。直接来自this oracle java教程:
execute:如果查询返回的第一个对象是ResultSet对象,则返回true。如果查询可以返回一个或多个ResultSet对象,请使用此方法。通过重复调用Statement.getResutSet来检索从查询返回的ResultSet对象。
“一个或多个ResultSet对象”是什么意思?一旦得到一系列ResultSet
,怎么可能管理它们?而st.executeQuery(sql)
和st.executeUpdate(sql)
非常清楚。这不是(至少对我而言)st.execute(sql)
的目标,它也可以返回一个int,就好像它更新了一个表。
提前致谢
“一个或多个ResultSet对象”是什么意思?
execute
方法的javadoc说:
“执行给定的SQL语句,可能会返回多个结果。在某些(非常见)情况下,单个SQL语句可能会返回多个结果集和/或更新计数。通常,您可以忽略此操作,除非您(1)执行存储过程您知道可能会返回多个结果或(2)您正在动态执行未知的SQL字符串。“
这几乎解释了它。有时查询可以提供多个ResultSet
。
如果是这样,一旦得到一个ResultSet数组怎么可能管理它们?
我不确定你的意思,但是:
它不是(至少对我而言)st.execute(sql)的目标,它也可以返回一个int,好像它已经更新了一个表。
execute
的一个用途是执行SQL语句,如果你不知道它是一个查询,一个更新(某种类型)......还是其他可能提供多个结果集的东西。这是executeQuery()
和executeUpdate()
的概括......
boolean execute():执行此Prepared Statement对象中的SQL语句,该对象可以是任何类型的SQL语句。
ResultSet executeQuery():在此Prepared Statement对象中执行SQL查询,并返回查询生成的ResultSet对象。
int executeUpdate():执行此Prepared Statement对象中的SQL语句,该语句必须是SQL INSERT,UPDATE或DELETE语句;或者不返回任何内容的SQL语句,例如DDL语句。
找到像这样的问题的答案的最佳地方是Javadocs:Here