Java で ResultSet を返す
データベース テーブルへのアクセスには、多くの場合、複数行のデータを含む結果セットの取得が含まれます。従来は、これらの結果セットが返され、その後反復処理されて個々の行が抽出されていました。ただし、このアプローチには潜在的な問題があります。結果セットのクロージャビリティの問題
結果セットを管理する際の課題の 1 つは、結果セットの固有のクロージャビリティです。結果セットが閉じられると、それに関連するステートメントと接続も閉じられ、それ以降の操作ではアクセスできなくなります。これにより、いわゆる「ResultSet を閉じた後は操作が許可されません」エラーが発生する可能性があります。解決策: コレクションへのマッピング
これらの問題を回避するには、次のことをお勧めします。パブリック メソッドで生の結果セットを返さないようにします。代わりに、結果セットを JavaBeans のコレクションにマッピングし、代わりにそのコレクションを返すことを検討してください。これにより、コレクションが不要になるまでステートメントと接続を開いたままにし、早期の終了を防ぎます。これを実装する方法の例を次に示します。public List<Biler> list() throws SQLException { // Initialize connection, statement, and result set Connection connection = ... PreparedStatement statement = ... ResultSet resultSet = ... List<Biler> bilers = new ArrayList<>(); // Iterate over the result set and map rows to JavaBeans while (resultSet.next()) { Biler biler = new Biler(); // Set properties of the JavaBean from the result set ... bilers.add(biler); } return bilers; }
Try-with-Resources の使用
Java 7 では、閉じる必要があるリソースの管理を簡素化する try-with-resources ステートメントが導入されました。以下のコード スニペットでは、接続、ステートメント、結果セットは try ブロックの最後に自動的に閉じられます。public List<Biler> list() throws SQLException { try ( Connection connection = ... PreparedStatement statement = ... ResultSet resultSet = ... ) { // Iterate over the result set and map rows to JavaBeans ... } return bilers; }
以上が早期終了を避けるために Java で ResultSet を安全に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。