Java SE 7の一部であるJDBC 4.1には、次の機能が導入されています。
try
-with-resourcesステートメントを使用すると、Connection
、ResultSet
、およびStatement
タイプのリソースを閉じることができますRowSetFactory
インタフェースとRowSetProvider
クラスの導入により、JDBCドライバでサポートされるすべてのタイプの行セットを作成できます。try
-with-resources文を使用して、SQLException
またはその他の例外がスローされたかどうかに関係なく、java.sql.Connection
、java.sql.Statement
、およびjava.sql.ResultSet
オブジェクトを自動的に閉じることができます。try
-with-resources文は、try
文と、宣言された1つ以上のリソース(セミコロンで区切られる)で構成されます。
詳細は、「try-with-resources文」を参照してください。
次の例ではtry
-with-resources文を使用して、Statement
オブジェクトのstmt
を自動的に閉じます。
public static void viewTable(Connection con) throws SQLException { String query = "select COF_NAME, SUP_ID, PRICE, SALES, TOTAL from COFFEES"; try (Statement stmt = con.createStatement()) { ResultSet rs = stmt.executeQuery(query); while (rs.next()) { String coffeeName = rs.getString("COF_NAME"); int supplierID = rs.getInt("SUP_ID"); float price = rs.getFloat("PRICE"); int sales = rs.getInt("SALES"); int total = rs.getInt("TOTAL"); System.out.println(coffeeName + ", " + supplierID + ", " + price + ", " + sales + ", " + total); } } }
次の文は、1つのリソースstmt
を宣言するtry
-with-resources文で、このリソースが自動的に閉じられたあと、try
ブロックが終了します。
try (Statement stmt = con.createStatement()) { // ... }
RowSetFactory
のインスタンスを使用して、RowSet
オブジェクトを作成できます。次の例ではRowSetFactory
のインスタンスを使用して、JdbcRowSet
オブジェクトjdbcRs
を作成します。
public void testJdbcRowSet(String username, String password) throws SQLException { RowSetFactory myRowSetFactory = null; JdbcRowSet jdbcRs = null; ResultSet rs = null; Statement stmt = null; try { myRowSetFactory = RowSetProvider.newFactory(); jdbcRs = myRowSetFactory.createJdbcRowSet(); jdbcRs.setUrl("jdbc:myDriver:myAttribute"); jdbcRs.setUsername(username); jdbcRs.setPassword(password); jdbcRs.setCommand("select COF_NAME, SUP_ID, PRICE, SALES, TOTAL from COFFEES"); jdbcRs.execute(); // ...
次の文では、RowSetProvider
オブジェクトmyRowSetFactory
を作成し、デフォルトのRowSetFactory
実装com.sun.rowset.RowSetFactoryImpl
を使用します。
myRowSetFactory = RowSetProvider.newFactory();
あるいは、JDBCドライバに独自のRowSetFactory
実装がある場合、これをnewFactory
の引数として指定できます。
次の文はJdbcRowSet
オブジェクトjdbcRs
を作成し、このデータベース接続プロパティを構成します。
jdbcRs = myRowSetFactory.createJdbcRowSet(); jdbcRs.setUrl("jdbc:myDriver:myAttribute"); jdbcRs.setUsername(username); jdbcRs.setPassword(password);
RowSetFactory
インタフェースには、JDBC 4.1以降で使用可能な異なるタイプのRowSet
実装を作成するための次のメソッドが含まれています。
createCachedRowSet
createFilteredRowSet
createJdbcRowSet
createJoinRowSet
createWebRowSet