Pratik Kumawat:
違いは何であるstatement.executeQuery
とはstatement.getResultSet()
。私は両方が返されますと信じてResultSet
、SELECT文のためではなく、私たちはその彼らの使用する必要があり、特定の基準があります。
マークRotteveel:
一般的に、あなたは使用する必要がありexecuteQuery
、あなたがselect文を実行している知っていれば。getResultSet()
それだけで方法は、文を実行しません。
getResultSet
と組み合わせて使用することを意図していますexecute
。execute
方法は、未知の文タイプ、または(0以上の更新カウントまたは結果セットである)複数の結果を生成することができ文での使用を目的としています。
だから、要するに:あなたは、通常、使用する必要がありますexecuteQuery
。
あなたが使用する必要があります簡単な例execute
のコードは、ユーザー提供のクエリを実行するとき、例えば、(更新、クエリ、またはより複雑なもの)を実行しようとしている照会ものを知っていない場合。
別の例は、更新カウントと結果セットの複数を返すことができるSQL Serverのストアドプロシージャ、です。
その結果、処理の一般的な方法execute
です:
boolean isResultSet = statement.execute(sql);
while (true) {
if (isResultSet) {
try (ResultSet rs = statement.getResultSet()) {
// do something with result set
}
} else {
int updateCount = statement.getUpdateCount();
if (updateCount == -1) {
// -1 signals no more results
break;
}
// do something with update count
}
// move to next result
isResultSet = statement.getMoreResults();
}
この性を保証は、すべてのこと*の結果が処理されます。
*:この例では、複数の例外は、結果セットと更新カウントとインターリーブすることを可能にする(SQL Serverのような)システムのための例外結果を無視し、参照*すべてを取得する方法* JDBCを使用して、ストアドプロシージャからのバックより徹底例えば