JDBC を使ったデータベースの処理は、以下のような流れで進んでいきます。
Connection オブジェクトを取得)Statement オブジェクトを作成)ResultSet オブジェクトを取得)Connection, Statement, ResultSet は、処理が終わったら close() する必要があります。
各オブジェクトのオープンとクローズの関係を、分かりやすいようにインデントで対にして示すと以下のようになります。
あらかじめ Class.forName(...) で JDBC ドライバを登録しておく
Connection connection = DirverManager.getConnection(...)
Statement statement = connection.createStatement()
ResultSet resultSet = statement.executeQuery(...)
resultSet を使った処理
resultSet.close()
statement.close()
connection.close()
上記の例では、SQL 文を実行するために Statement.executeQuery() を呼んでいますが、実行する SQL の種類によってメソッドが異なります。
int Statement#executeUpdate(...)ResultSet Statement#executeStatement(...)Statement がクローズされると、その Statement からオープンされた ResultSet も自動的にクローズされます(API 仕様)。
1 つの Statement から複数の ResultSet を同時にオープンすることはできません。
すでに ResultSet をオープンしている状態で、Statement の execution メソッドを呼び出すと、自動的にその ResultSet はクローズされ、新しい ResultSet が生成されます。