亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中RowSet如何使用

發布時間:2021-07-01 16:12:32 來源:億速云 閱讀:162 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關Java中RowSet如何使用,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

1、與ResultSet比較

(1)RowSet擴展了ResultSet接口,因此可以像使用ResultSet一樣使用RowSet。

(2)RowSet擴展了ResultSet接口,因此功能比ResultSet更多、更豐富。

(3)默認情況下,所有 RowSet 對象都是可滾動的和可更新的。而ResultSet是只能向前滾動和只讀的。

(4)RowSet可以是非鏈接的,而ResultSet是連接的。因此利用CacheRowSet接口可以離線操作數據。

(5)RowSet接口添加了對 JavaBeans 組件模型的 JDBC API 支持。rowset 可用作可視化 Bean 開發環境中的 JavaBeans 組件。

(6)RowSet采用了新的連接數據庫的方法。

(7)CacheRowSet是可以序列化的。

(8)RowSet和ResultSet都代表一行行的數據、屬性以及相關操作方法。

(9)自己認為,應該傾向于把RowSet看成是與數據庫無關的東西,它只是一個代表一行行數據的對象,而ResultSet則是一個與數據庫緊密聯系的東西。

2、JDK 5.0 的5個標準RowSet接口

在JDK 5.0中,5個標準RowSet接口包括 CachedRowSet,WebRowSet,FilteredRowSet,JoinRowSet 和 JdbcRowSet。相應的參考實現是Sun公司給出的,位于com.sun.rowset包下,分別為為CachedRowSetImpl,WebRowSetImpl,FilteredRowSetImpl,JoinRowSetImpl 和 JdbcRowSetImpl。這5個標準接口中JdbcRowSet是鏈接的rowset,而其他4個是非鏈接的rowset。

(1)CachedRowSet:最常用的一種 RowSet。其他三種 RowSet(WebRowSet,FilteredRowSet,JoinRowSet)都是直接或間接繼承于它并進行了擴展。它提供了對數據庫的離線操作,可以將數據讀取到內存中進行增刪改查,再同步到數據源。CachedRowSet是可滾動的、可更新的、可序列化,可作為 JavaBeans 在網絡間傳輸。支持事件監聽,分頁等特性。 CachedRowSet 對象通常包含取自結果集的多個行,但是也可包含任何取自表格式文件(如電子表格)的行。

(2)WebRowSet:繼承自 CachedRowSet,并可以將 WebRowSet 寫到 XML 文件中,也可以用符合規范的 XML 文件來填充 WebRowSet。

(3)FilteredRowSet:通過設置 Predicate(在 javax.sql.rowset 包中),提供數據過濾的功能。可以根據不同的條件對 RowSet 中的數據進行篩選和過濾。

(4)JoinRowSet:提供類似 SQL JOIN 的功能,將不同的 RowSet 中的數據組合起來。目前在 Java 6 中只支持內聯(Inner Join)。

(5)JdbcRowSet:對 ResultSet 的一個封裝,使其能夠作為 JavaBeans 被使用,是***一個保持數據庫連接的 RowSet。JdbcRowSet 對象是連接的 RowSet 對象,也就是說,它必須使用啟用 JDBC 技術的驅動程序(“JDBC 驅動程序”)來持續維持它與數據源的連接。

3、填充RowSet

前面說過,應該傾向于把RowSet看成是與數據庫無關而只代表一行行數據的對象,因此就涉及到數據從哪里來的問題。

(1)從數據庫直接獲取數據

由于大部分情況下,與數據打交道也就是與數據庫打交道,因此RowSet接口提供了通過JDBC直接從數據庫獲取數據的方法,以參考實現JdbcRowSetImpl為例,就是這樣:

RowSet rs = new JdbcRowSetImpl(); //也可以是CachedRowSetImpl,WebRowSetImpl,FilteredRowSetImpl,JoinRowSetImpl。
rs.setUrl("jdbc:mysql:///test");
rs.setUsername("root");
rs.setPassword("");
rs.setCommand("SELECT * FROM EMPLOYEES");
rs.execute();

設置好相關屬性,運行execute()方法后,EMPLOYEES表中的數據就被填充到rs對象中了。
除了通過設置JDBC連接URL、用戶名和密碼外,RowSet也可以使用數據源名稱屬性的值來查找已經在命名服務中注冊的 DataSource 對象。完成檢索后,可以使用 DataSource 對象創建到它所表示的數據源的連接,設置數據源名稱可以使用setDataSourceName()方法。

(2)用ResultSet填充

在有現成ResultSet的情況下,如果想將其作為RowSet使用;或者當 DBMS 不提供對滾動和更新的完全支持時,如果想使不可滾動和只讀的 ResultSet 對象變得可滾動和可更新,可以創建一個使用該 ResultSet 對象的數據所填充的 CachedRowSet 對象。

ResultSet rs = stmt.executeQuery("SELECT * FROM EMPLOYEES");
CachedRowSet crs = new CachedRowSetImpl(); //也可以是WebRowSetImpl,FilteredRowSetImpl,JoinRowSetImpl,因為他們均繼承自CachedRowSetImpl
crs.populate(rs);

運行populate()方法后,ResultSet對象rs中的數據就被填充到crs對象中了。

(3)用XML填充

如果您打算將XML作為數據交換格式在客戶端和你的服務器之間傳輸數據并且向實現數據離線編輯、或者向使用XML格式的數據的話,可以使用WebRowSet接口來用XML填充數據。

WebRowSet wrs = new WebRowSetImpl();
wrs.readXml(new FileReader(new File("D:\\employees.xml")));

運行readXml()方法后,employees.xml文件的數據就被填充到wrs對象中了。employees.xml 文件的格式參見附錄。

(4)用其他方法填充

如果形用其他方式填充,比如csv、excel、text、http等格式或方法填充數據,那么就需要自己編寫代碼實現RowSet。

4、操作RowSet中的數據及元數據

除了ResultSet提供的操作數據和元數據方法外,RowSet接口沒有提供太多額外的方法。

1)更新數據
rs.absolute(5);
rs.updateInt(1, 10);
rs.updateInt(2, 1000);
rs.updateString(3, "John");
rs.updateRow();

(2)插入數據
rs.moveToInsertRow();
rs.updateInt(1, 10);
rs.updateInt(2, 1000);
rs.updateString(3, "John");
rs.insertRow();

(3)刪除數據
rs.absolute(5);
rs.deleteRow();

(4)設置屬性
rs.setCommand("select id, salary, name from employees where id = ?");
rs.setInt(1, 1);
rs.execute();

(5)元數據
RowSetMetaData rsmd = (RowSetMetaData)rs.getMetaData();
int count = rsmd.getColumnCount();
int type = rsmd.getColumnType(2);

5、事務與更新底層數據源

RowSet本身只代表具體數據,事務以及底層數據源的更新是與底層數據源密切相關的概念。對于JDBC數據源,相應的標準接口JdbcRowSet通過與數據庫相關的方法來來實現,如commit(),rollback()等。對于標準接口的中非連接rowset,如CachedRowSet,則在對RowSet中的數據改動后,通過運行acceptChanges()方法,在內部調用 RowSet 對象的 writer 將這些更改寫入數據源,從而將 CachedRowSet 對象中的更改傳播回底層數據源。

6、可序列化非連接RowSet

使用 CachedRowSet 對象的主要原因之一是要在應用程序的不同組件之間傳遞數據。因為 CachedRowSet 對象是可序列化的,所以可使用它(舉例來說)將運行于服務器環境的企業 JavaBeans 組件執行查詢的結果通過網絡發送到運行于 web 瀏覽器的客戶端。

由于 CachedRowSet 對象是非連接的,所以和具有相同數據的 ResultSet 對象相比更為簡潔。因此,它特別適于向瘦客戶端(如 PDA)發送數據,這種瘦客戶端由于資源限制或安全考慮而不適于使用 JDBC 驅動程序。所以 CachedRowSet 對象可提供一種“獲取各行”的方式而無需實現全部 JDBC API。

關于Java中RowSet如何使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

社会| 济宁市| 普定县| 安平县| 望谟县| 化隆| 太原市| 油尖旺区| 临朐县| 扎兰屯市| 桐梓县| 定襄县| 噶尔县| 三河市| 昂仁县| 武邑县| 红原县| 巴里| 三穗县| 铁岭县| 名山县| 泽普县| 临猗县| 汤原县| 金湖县| 九江市| 金乡县| 怀集县| 亳州市| 即墨市| 商丘市| 朝阳县| 英吉沙县| 岳普湖县| 德阳市| 翁源县| 谷城县| 泰安市| 武功县| 嘉善县| 芷江|