Statement.execute(sql) vs executeUpdate(sql) and executeQuery(sql)
What do they mean by "one or more ResultSet objects"?
The javadoc for the execute
method says this:
"Executes the given SQL statement, which may return multiple results. In some (uncommon) situations, a single SQL statement may return multiple result sets and/or update counts. Normally you can ignore this unless you are (1) executing a stored procedure that you know may return multiple results or (2) you are dynamically executing an unknown SQL string."
That pretty much explains it. Sometimes a query can deliver more than one ResultSet
.
if so how is it possible to manage them once got an array of ResultSet?
I'm not sure what you mean but:
- you can't get them as an array: you must get them one at a time, and
- you could put the ResultSets into an array ...
It's not (at least to me) the aim of st.execute(sql) which can also return an int as if it was updated a table.
One use of execute
is to execute an SQL statement if you don't know if it is a query, an update (of some kind) ... or something else that potentially delivers multiple result sets. It is a generalization of executeQuery()
and executeUpdate()
...
boolean execute(): Executes the SQL statement in this Prepared Statement object, which may be any kind of SQL statement.
ResultSet executeQuery(): Executes the SQL query in this Prepared Statement object and returns the ResultSet object generated by the query.
int executeUpdate(): Executes the SQL statement in this Prepared Statement object, which must be an SQL INSERT, UPDATE or DELETE statement; or an SQL statement that returns nothing, such as a DDL statement.
The best place to find answers to questions like this is the Javadocs: Here
execute() : The method used for all types of SQL statements, and that is, returns a boolean value of TRUE or FALSE. If the method return TRUE, return the ResultSet object and FALSE returns the int value.
executeUpdate() : This method is used for execution of DML statement(INSERT, UPDATE and DELETE) which is return int value, count of the affected rows.
executeQuery() : This method is used to retrieve data from database using SELECT query. This method returns the ResultSet object that returns the data according to the query.