JDBC 4.1

JDBC 4.1, which is part of Java SE 7, introduces the following features:

Using try-with-resources Statements to Automatically Close JDBC Resources

You can use a try-with-resources statement to automatically close java.sql.Connection, java.sql.Statement, and java.sql.ResultSet objects, regardless of whether a SQLException or any other exception has been thrown. A try-with-resources statement consists of a try statement and one or more declared resources (which are separated by semicolons).

See The try-with-resources Statement for more information

The following example uses a try-with-resources statement to close the Statement object, stmt, automatically:

  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);
      }
    }
  }

The following statement is a try-with-resources statement that declares one resource, stmt, which will be automatically closed then the try block terminates:

    try (Statement stmt = con.createStatement()) {

      // ...

    }

RowSet 1.1: Creating Row Sets with RowSetFactory Interface and RowSetProvider Class

You can use an instance of RowSetFactory to create a RowSet object. The following example uses an instance of RowSetFactory to create the JdbcRowSet object, 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();

      // ...

The following statement creates the RowSetProvider object myRowSetFactory with the default RowSetFactory implementation, com.sun.rowset.RowSetFactoryImpl:

      myRowSetFactory = RowSetProvider.newFactory();

Alternatively, if your JDBC driver has its own RowSetFactory implementation, you can specify it as an argument of newFactory.

The following statements create the JdbcRowSet object jdbcRs and configure its database connection properties:

      jdbcRs = myRowSetFactory.createJdbcRowSet();

      jdbcRs.setUrl("jdbc:myDriver:myAttribute");
      jdbcRs.setUsername(username);
      jdbcRs.setPassword(password);

The RowSetFactory interface contains methods to create the different types of RowSet implementations available in JDBC 4.1 and later:


Copyright © 1993, 2015, Oracle and/or its affiliates. All rights reserved.