36

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

execute: クエリが返す最初のオブジェクトが ResultSet オブジェクトの場合、true を返します。クエリが 1 つ以上の ResultSet オブジェクトを返す可能性がある場合は、このメソッドを使用します。Statement.getResutSet を繰り返し呼び出して、クエリから返された ResultSet オブジェクトを取得します。

「 1 つ以上の ResultSet オブジェクト」とはどういう意味ですか? の配列を取得したら、どうすればそれらを管理できますResultSetか? 一方st.executeQuery(sql)、 とst.executeUpdate(sql)は非常に明確です。(少なくとも私にとっては)st.execute(sql)テーブルが更新されたかのように int を返すことも目的ではありません。

前もって感謝します

4

3 に答える 3

20

boolean execute(): この Prepared Statement オブジェクト内の SQL ステートメントを実行します。これは、あらゆる種類の SQL ステートメントである可能性があります。

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

int executeUpdate(): この Prepared Statement オブジェクト内の SQL ステートメントを実行します。これは、SQL INSERT、UPDATE、または DELETE ステートメントである必要があります。または、DDL ステートメントなど、何も返さない SQL ステートメント。

このような質問に対する回答を見つけるのに最適な場所は、Javadocs です

于 2016-05-29T12:09:57.347 に答える
15

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

executeメソッドの javadoc には次のように書かれています。

"指定された SQL ステートメントを実行すると、複数の結果が返される場合があります。(まれな) 状況では、1 つの SQL ステートメントが複数の結果セットや更新カウントを返す場合があります。(1) ストアド プロシージャを実行していない限り、通常はこれを無視できます。複数の結果を返す可能性があることがわかっているか、(2) 不明な SQL 文字列を動的に実行しています。

それはほとんどそれを説明しています。クエリが複数の を提供する場合がありますResultSet

もしそうなら、ResultSetの配列を取得したらどうすればそれらを管理できますか?

私はあなたが何を意味するのか分かりませんが:

  • それらを配列として取得することはできません。一度に 1 つずつ取得する必要があります。
  • ResultSets を配列に入れることができます...

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

の用途の 1 つはexecute、SQL ステートメントがクエリなのか、(何らかの) 更新なのか、または複数の結果セットを提供する可能性があるその他のものなのかがわからない場合に、SQL ステートメントを実行することです。それはの一般化executeQuery()ですexecuteUpdate()...

于 2013-05-18T15:17:24.587 に答える