0

を使用して SELECT を実行しようとしていますPreparedStatementが、データが存在するにもかかわらず、結果が返されません。代わりに使用Statementすると、目的の結果が得られるため、PreparedStatement.
何か案は?

これが私のコードです:

String species = "Snail";
PreparedStatement preparedStatement = con.prepareStatement("Select * from lifeforms where species=?",PreparedStatement.RETURN_GENERATED_KEYS);
preparedStatement.setString(1, species);
preparedStatement.execute();
ResultSet resultSet = preparedStatement.getGeneratedKeys();

また-私はちょうど試しました

resultSet = preparedStatement.execute();

resultSetしかし、ブール値を期待するように変更する必要があると言って、これはコンパイルされません。

これについての洞察は大歓迎です。

これが明らかな場合は申し訳ありませんが、ほとんど無意識になるまでドキュメントを読みました.Javaを学んでいるだけです.

4

2 に答える 2

2

関数はexecute()ブール値を返すため、selectステートメントを実行する場合は、これを結果セットのオブジェクトに入れることができませんexecuteQuery()

于 2012-12-09T08:21:16.150 に答える
2

ああ、私はついにこの質問への答えを見つけました-他の誰かが同じことで立ち往生している場合に備えて..

このexecute()メソッドには戻り値がありませんが、コンパイラーはブール値の戻り値を期待していると示唆していました。多分それは成功したかどうかのためにtrueまたはfalseを返すだけですか?

このexecuteUpdate()メソッドは、更新/挿入または削除されたレコード数のint値を返します。

クエリステートメントの結果セットを取得するには(たとえば、someTableから*を選択)、 ResultSet rs = preparedStatement.executeQuery()メソッドを使用します。これにより、実際のクエリ結果がResultSet変数に返されます。

于 2012-11-04T16:30:15.313 に答える