2013-05-18 2 views
18

У меня есть вопрос, связанный с этим методом: st.execute(sql); где st явно является объектом Statement. Непосредственно из this оракула Java Tutorial:Statement.execute (sql) vs executeUpdate (sql) и executeQuery (sql)

выполнения: Возвращает истину, если первый объект, что запрос возвращает является объектом ResultSet. Используйте этот метод, если запрос может вернуть один или объекты ResultSet. Получите объекты ResultSet, возвращенные с , путем повторного вызова Statement.getResutSet.

Что подразумевается под "один или несколько объектов ResultSet"? Как можно управлять ими после получения массива ResultSet? Принимая во внимание, что st.executeQuery(sql) и st.executeUpdate(sql) очень четкие. Это не (по крайней мере для меня) цель st.execute(sql), которая также может возвращать int, как если бы она была обновлена ​​таблицей.

Заранее спасибо

ответ

8

Что они означают «один или более объектов ResultSet»?

Javadoc для метода execute говорит, что это:.

"Выполняет заданную инструкцию SQL, которая может возвращать несколько результатов В некоторых (редких) случаях, один оператор SQL может возвращать несколько результатов наборы и/или счетчики обновлений. Обычно вы можете игнорировать это, если вы не (1) выполнение хранимой процедуры, которые вы знаете, может возвращать несколько результатов или (2) вы динамически выполняющиеся неизвестную строку SQL. "

Это в значительной степени объясняет это. Иногда запрос может доставлять более одного ResultSet.

если да, то как можно управлять ими после получения массива ResultSet?

Я не уверен, что вы имеете в виду, но:

  • вы не можете получить их в виде массива: вы должны получить их по одному за раз, и
  • вы могли бы поставить ResultSets в массив ...

это не (по крайней мере, для меня) целью st.execute (SQL), который также может возвращать Int, как если бы она была обновлена ​​таблица.

Одно использование execute является для выполнения оператора SQL, если вы не знаете, если это запрос, обновление (какой-то) ... или что-то еще, что потенциально обеспечивает несколько наборов результатов. Это обобщение executeQuery() и executeUpdate() ...

+1

(Примечание для редакторов - я намеренно использовать кавычки блоки и курсива вместе вещи, которые цитировали окончательного документа, и просто процитировать блоки для котировок из оригинального вопроса или комментариев. Пожалуйста, не мешайте форматированию. Если у вас есть проблемы с чтением курсива в вашем браузере, изменением шрифтов по умолчанию или размерами текста ...) –

3

булево выполнить(): выполняет оператор SQL в этом Подготовлен Statement объект, который может быть любого типа SQL заявление.

ResultSet ExecuteQuery(): Выполняет запрос SQL в этом Подготовлен Statement объекте и возвращает объект ResultSet сгенерированного запроса.

INT executeUpdate(): выполняет оператор SQL в этом Подготовлен Statement объект, который должен быть SQL INSERT, UPDATE или DELETE заявление; или SQL-оператор, который ничего не возвращает, например, оператор DDL.

Лучшее место, чтобы найти ответы на такие вопросы, как это Javadocs: Here

+0

Ссылка на javadocs должна быть http: // docs. oracle.com/javase/8/docs/api/java/sql/PreparedStatement.html –

Смежные вопросы