RowSet 新特性簡介
java 5在Java Database Connectivity (JDBC)方面加強了支持,其中加入了新的包javax.sql.rowset,javax.sql.rowset.serial,javax.sql.rowset.spi。從RowSet接口繼續規定了五個新的接口:
1. CachedRowSet: CachedRowset可以不用與數據源建立長期的連接,只有當從數據庫讀取數據或是往數據庫寫入數據的時候才會與數據庫建立連接,它提供了一種輕量級的訪問數據庫的方式,其數據均存在內存中。
2. JdbcRowSet:對ResultSet的對象進行包裝,使得可以將ResultSet對象做為一個JavaBeans ™ 組件。
3. FilteredRowSet:繼續自CachedRowSet,可以根據設置條件得到數據的子集。
4. JoinRowSet:繼續自CachedRowSet,可以將多個RowSet對象進行SQL Join語句的合并。
5. WebRowSet:繼續自CachedRowSet,可以將WebRowSet對象輸出成xml格式。
下面分別演示如何使用這五個新接口。
實驗環境
IBM DB2 Universal 8.1
數據庫名:DemoDB
數據庫用戶名:db2admin
數據庫密碼:passWord
CachedRowSet
CachedRowSet可以通過調用populate(ResuletSet rs)來生成數據,一旦獲得數據,CachedRowSet就可以斷開與數據庫的連接,直到往數據庫寫入數據的時候才需建立連接。
可以使用自己擴展的或是使用Reference Implement的實現類進行訪問數據庫。下面的代碼演示了如何根據ResultSet建立一個CachedRowSet對象,在中斷與數據庫連接的情況下,讀取數據,并做更新,最后再獲取數據庫連接,將更新落實到數據庫中。
public static void testCachedRowSet(){ Connection conn = null; try { // 獲得數據庫連接 conn= DriverManager.getConnection(DB2URL, DB2USER, DB2PASSWORD); Statement stmt = conn.createStatement(); // 查詢數據庫,獲得表數據 ResultSet rs = stmt.executeQuery("select * from student");//$NON-NLS-1$ // 根據ResultSet對象生成CachedRowSet類型的對象 CachedRowSetImpl crs = new CachedRowSetImpl(); crs.populate(rs); // 關閉ResultSet rs.close(); // 關閉數據庫的連接 conn.close(); // 在中斷與數據庫連接的情況下,對CachedRowSet進行操作 OperateOnRowSet(crs); // 重新獲取與數據庫的連接 conn= DriverManager.getConnection(DB2URL, DB2USER, DB2PASSWORD); // 將CachedRowSet的內容更新到數據庫 crs.acceptChanges(conn); // 關閉CachedRowSet crs.close(); // 關閉數據庫連接 conn.close(); } catch (InstantiationException e) { System.out.accessException e) { System.out.println("Andrew: IllegalAccessException!");//$NON-NLS-1$ } catch (ClassNotFoundException e) { System.out.println("Andrew: ClassNotFoundException!");//$NON-NLS-1$ }catch (SQLException e) { System.out.println("Andrew: SQLException!");//$NON-NLS-1$ e.printStackTrace(); } }
新聞熱點
疑難解答