JDBCチュートリアルによると:
resultSet = statement.executeQuery();
while (resultSet.next()) {
int id = resultSet.getInt("id");
// ...
}
はResultSet#next()
カーソルを現在の位置から1行前方に移動しtrue
、新しい現在の行が有効な場合は戻ります。したがって、while
行がなくなるとループは自動的に停止します。
複数の行ではなく0行または1行を返すことになっている場合は、if
代わりに次を使用します。
resultSet = statement.executeQuery();
if (resultSet.next()) {
int id = resultSet.getInt("id");
// ...
}
このようにして、を追加する機会がありelse
ます。
更新しますが、実際の問題とは関係ありませんが、コードに潜在的な問題が多く見られます。まず、相互に依存している複数のクエリを実行しているようです。これはより効率的に行うことができます。SQL結合に精通していますか?次に、JDBCリソースをリークしていませんか?ステートメントを取得しているように見えますが、使用後に適切に閉じることができるように、ステートメントのハンドルを取得していません。JDBCコードを適切に操作する方法の基本的な説明については、以前にリンクされたJDBCチュートリアルを参照してください。また、JDBCを適切に使用する方法のいくつかの基本的なキックオフの例については、この記事を参照してください。そうしないと、DBがリソースを使い果たしたときに、遅かれ早かれアプリケーションがクラッシュする可能性があります。