2013-05-18 12 views
18

私はこのメソッドに関する質問があります:st.execute(sql); stは明らかにStatementオブジェクトです。 は直接thisオラクルのJavaチュートリアルから:Statement.execute(sql)対executeUpdate(sql)とexecuteQuery(sql)

実行します。クエリが返すことを第1の目的は ResultSetオブジェクトである場合はtrueを返します。クエリが1つまたは個以上のResultSetオブジェクトを返すことができる場合は、このメソッドを使用します。 Statement.getResutSetを繰り返し呼び出して、 から返されたResultSetオブジェクトを取得します。 "一つ以上のResultSetはオブジェクト" とはどういう意味ですか

?一度、それらを管理することは可能ですResultSetの配列を持っていますか? st.executeQuery(sql)st.executeUpdate(sql)は非常に明確です。 st.execute(sql)の目的は、テーブルを更新したかのようにintを返すことはできません(少なくとも私にとって)。事前に

おかげ

答えて

8

彼らは「一つ以上のResultSetオブジェクト」とはどういう意味ですか?

executeメソッドのjavadocは、この意見:

は、複数の結果を返すことが指定されたSQL文を実行いくつかの(珍しい)状況では、単一のSQL文が複数の結果を返すことがあります。 (1)複数の結果を返す可能性があるストアドプロシージャを実行している場合、または(2)未知のSQL文字列を動的に実行している場合を除き、通常無視してもかまいません。 "

それはかなりそれを説明します。場合によっては、1つのクエリで2つ以上のメッセージを配信することがあります。ResultSet

ResultSetの配列を取得したらどのように管理できますか?あなたは配列としてそれらを得ることができない

  • :あなたはそれらを一つずつ、および
  • を取得する必要がありますが、ResultSetを置くことができ、私はあなたが何を意味するかわからないけど

配列に...

それがテーブルを更新しているかのように、intを返すことができst.execute(SQL)の目的は(少なくとも私には)ありません。 execute

1つの使用は、それが(いくつかの種類の)クエリー、更新...または潜在的に複数の結果セットを提供する何か他のものであるかどうかわからない場合は、SQL文を実行することです。それはexecuteQuery()executeUpdate()の一般化です...

+1

(編集者への注記 - 私は意図的に決定的なドキュメントから引用されているもののため一緒に引用ブロックとイタリック体を使用して、わずか数ブロックを引用あなたのブラウザで斜体を読むのに問題がある場合は、デフォルトのフォントまたはテキストサイズを変更してください...) –

3

ブールexecute(): このPrepared StatementオブジェクトでSQL文を実行します。このPrepared Statementオブジェクトは、あらゆる種類のSQL文でもかまいません。

ResultSet executeQuery(): このPrepared StatementオブジェクトでSQLクエリを実行し、クエリによって生成されたResultSetオブジェクトを返します。

int型のexecuteUpdate(): は、SQLのINSERT、UPDATEであるか、またはステートメントを削除する必要があり、この準備文オブジェクトでSQL文を実行し、 DDLステートメントなど、何も戻さないSQLステートメントが含まれています。

このような質問に対する答えを見つける最適な場所でのJavadocです: Here

+0

javadocsのリンクはhttp:// docsでなければなりません。 oracle.com/javase/8/docs/api/java/sql/PreparedStatement.html –

関連する問題