?? cachedrowset.htm
字號(hào):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0085)http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/CachedRowSet.html -->
<!--NewPage--><HTML><HEAD><TITLE>CachedRowSet (Java 2 Platform SE 5.0)</TITLE><!-- Generated by javadoc (build 1.5.0_03) on Thu Jun 22 12:47:57 CST 2006 -->
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="javax.sql.rowset.CachedRowSet interface" name=keywords><LINK
title=Style href="CachedRowSet.files/stylesheet.css" type=text/css
rel=stylesheet>
<SCRIPT type=text/javascript>function windowTitle(){ parent.document.title="CachedRowSet (Java 2 Platform SE 5.0)";}</SCRIPT>
<NOSCRIPT></NOSCRIPT>
<META content="MSHTML 6.00.2900.3059" name=GENERATOR></HEAD>
<BODY bgColor=white onload=windowTitle();><!-- ========= START OF TOP NAVBAR ======= --><A
name=navbar_top><!-- --></A><A title=跳過導(dǎo)航鏈接
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/CachedRowSet.html#skip-navbar_top"></A>
<TABLE cellSpacing=0 cellPadding=1 width="100%" summary="" border=0>
<TBODY>
<TR>
<TD class=NavBarCell1 bgColor=#eeeeff colSpan=2><A
name=navbar_top_firstrow><!-- --></A>
<TABLE cellSpacing=3 cellPadding=0 summary="" border=0>
<TBODY>
<TR vAlign=top align=middle>
<TD class=NavBarCell1 bgColor=#eeeeff><A
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/overview-summary.html"><FONT
class=NavBarFont1><B>概述</B></FONT></A> </TD>
<TD class=NavBarCell1 bgColor=#eeeeff><A
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/package-summary.html"><FONT
class=NavBarFont1><B>軟件包</B></FONT></A> </TD>
<TD class=NavBarCell1Rev bgColor=#ffffff> <FONT
class=NavBarFont1Rev><B>類</B></FONT> </TD>
<TD class=NavBarCell1 bgColor=#eeeeff><A
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/class-use/CachedRowSet.html"><FONT
class=NavBarFont1><B>使用</B></FONT></A> </TD>
<TD class=NavBarCell1 bgColor=#eeeeff><A
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/package-tree.html"><FONT
class=NavBarFont1><B>樹</B></FONT></A> </TD>
<TD class=NavBarCell1 bgColor=#eeeeff><A
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/deprecated-list.html"><FONT
class=NavBarFont1><B>已過時(shí)</B></FONT></A> </TD>
<TD class=NavBarCell1 bgColor=#eeeeff><A
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/index-files/index-1.html"><FONT
class=NavBarFont1><B>索引</B></FONT></A> </TD>
<TD class=NavBarCell1 bgColor=#eeeeff><A
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/help-doc.html"><FONT
class=NavBarFont1><B>幫助</B></FONT></A> </TD></TR></TBODY></TABLE></TD>
<TD vAlign=top align=right rowSpan=3><EM><B>Java<SUP><FONT
size=-2>TM</FONT></SUP> 2 Platform<BR>Standard Ed.
5.0</B></EM> </TD></TR>
<TR>
<TD class=NavBarCell2 bgColor=white><FONT size=-2> <A
title="javax.sql.rowset 中的類"
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/BaseRowSet.html"><B>上一個(gè)類</B></A>
<A title="javax.sql.rowset 中的接口"
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/FilteredRowSet.html"><B>下一個(gè)類</B></A></FONT></TD>
<TD class=NavBarCell2 bgColor=white><FONT size=-2><A
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/index.html?javax/sql/rowset/CachedRowSet.html"
target=_top><B>框架</B></A> <A
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/CachedRowSet.html"
target=_top><B>無框架</B></A>
<SCRIPT type=text/javascript> <!-- if(window==top) { document.writeln('<A HREF="../../../allclasses-noframe.html"><B>所有類</B></A>'); } //--></SCRIPT>
<NOSCRIPT><A
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/allclasses-noframe.html"><B>所有類</B></A>
</NOSCRIPT></FONT></TD></TR>
<TR>
<TD class=NavBarCell3 vAlign=top><FONT size=-2>摘要: 嵌套 | <A
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/CachedRowSet.html#field_summary">字段</A> | 構(gòu)造方法 | <A
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/CachedRowSet.html#method_summary">方法</A></FONT></TD>
<TD class=NavBarCell3 vAlign=top><FONT size=-2>詳細(xì)信息: <A
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/CachedRowSet.html#field_detail">字段</A> | 構(gòu)造方法 | <A
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/CachedRowSet.html#method_detail">方法</A></FONT></TD></TR></TBODY></TABLE><A
name=skip-navbar_top></A><!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2><FONT size=-1>javax.sql.rowset</FONT> <BR>接口 CachedRowSet</H2>
<DL>
<DT><B>所有超級接口:</B>
<DD><A title="javax.sql.rowset 中的接口"
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/Joinable.html">Joinable</A>,
<A title="java.sql 中的接口"
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/sql/ResultSet.html">ResultSet</A>,
<A title="javax.sql 中的接口"
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/RowSet.html">RowSet</A>
</DD></DL>
<DL>
<DT><B>所有已知子接口:</B>
<DD><A title="javax.sql.rowset 中的接口"
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/FilteredRowSet.html">FilteredRowSet</A>,
<A title="javax.sql.rowset 中的接口"
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/JoinRowSet.html">JoinRowSet</A>,
<A title="javax.sql.rowset 中的接口"
href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/WebRowSet.html">WebRowSet</A>
</DD></DL>
<HR>
<DL>
<DT><PRE>public interface <B>CachedRowSet</B><DT>extends <A title="javax.sql 中的接口" href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/RowSet.html">RowSet</A>, <A title="javax.sql.rowset 中的接口" href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/Joinable.html">Joinable</A></DT></PRE></DT></DL><PRE></PRE>
<P>所有標(biāo)準(zhǔn) <CODE>CachedRowSet</CODE> 實(shí)現(xiàn)都必須實(shí)現(xiàn)的接口。
<P>Sun Microsystems 提供的 <CODE>CachedRowSet</CODE>
接口的參考實(shí)現(xiàn)是一個(gè)標(biāo)準(zhǔn)實(shí)現(xiàn)。開發(fā)人員可以按原樣使用此實(shí)現(xiàn)、可以擴(kuò)展它,也可以選擇自己編寫此接口的實(shí)現(xiàn)。
<P><CODE>CachedRowSet</CODE> 對象是一個(gè)數(shù)據(jù)行的容器,可在內(nèi)存中緩存其各行,這使得進(jìn)行操作時(shí)無需總是連接到數(shù)據(jù)源。此外,它還是一個(gè)
JavaBeans<SUP><FONT size=-2>TM</FONT></SUP>
組件,是可滾動(dòng)、可更新、可序列化的。<CODE>CachedRowSet</CODE>
對象通常包含結(jié)果集中的行,但它也可以包含任何具有表格式的文件(如電子表格)中的行。參考實(shí)現(xiàn)只支持從 <CODE>ResultSet</CODE>
對象中獲取數(shù)據(jù),但是開發(fā)人員可以擴(kuò)展 <CODE>SyncProvider</CODE> 實(shí)現(xiàn),以提供對其他表格數(shù)據(jù)源的訪問。
<P>應(yīng)用程序可以修改 <CODE>CachedRowSet</CODE> 對象中的數(shù)據(jù),這些修改隨后可以被傳播回?cái)?shù)據(jù)源。
<P><CODE>CachedRowSet</CODE> 對象是一個(gè)<I>非連接</I>
rowset,這意味著它只會(huì)短暫地連接其數(shù)據(jù)源。連接數(shù)據(jù)源發(fā)生在讀取數(shù)據(jù)以用各行填充自身,以及將更改傳播回其底層數(shù)據(jù)源時(shí)。其余時(shí)間
<CODE>CachedRowSet</CODE> 對象是非連接的,包括修改它的數(shù)據(jù)時(shí)。非連接使 <CODE>RowSet</CODE>
對象更為簡潔,因此更容易傳遞給另一個(gè)組件。例如,非連接 <CODE>RowSet</CODE> 對象可以被序列化并通過導(dǎo)線傳遞到瘦客戶端 (thin
client),如個(gè)人數(shù)字助理(personal digital assistant,PDA)。
<P>
<H3>1.0 創(chuàng)建 <CODE>CachedRowSet</CODE> 對象</H3>以下代碼行使用參考實(shí)現(xiàn) (RI) 中提供的默認(rèn)
<CODE>CachedRowSet</CODE> 構(gòu)造方法來創(chuàng)建默認(rèn)的 <CODE>CachedRowSet</CODE> 對象。 <PRE> CachedRowSetImpl crs = new CachedRowSetImpl();
</PRE>這一新 <CODE>CachedRowSet</CODE> 對象的屬性設(shè)置為 <CODE>BaseRowSet</CODE>
對象的默認(rèn)屬性,此外,它將 <CODE>RIOptimisticProvider</CODE>
對象作為其同步提供程序。<CODE>RIOptimisticProvider</CODE>(RI 中包含的兩個(gè)
<CODE>SyncProvider</CODE> 實(shí)現(xiàn)之一)是在沒有指定同步提供程序時(shí),<CODE>SyncFactory</CODE> 單件
(singleton) 將提供的默認(rèn)提供程序。
<P><CODE>SyncProvider</CODE> 對象提供了帶有 reader 的(<CODE>RowSetReader</CODE> 對象)的
<CODE>CachedRowSet</CODE> 對象,用于從數(shù)據(jù)源讀取數(shù)據(jù)以便用該數(shù)據(jù)填充自身。可以實(shí)現(xiàn) reader 從
<CODE>ResultSet</CODE> 對象或者表格式的文件中讀取數(shù)據(jù)。<CODE>SyncProvider</CODE> 對象還提供了
writer(<CODE>RowSetWriter</CODE> 對象),用于同步在與底層數(shù)據(jù)源中的數(shù)據(jù)斷開連接時(shí)對
<CODE>CachedRowSet</CODE> 對象數(shù)據(jù)所做的任何更改。
<P>可以實(shí)現(xiàn) writer 以在檢查和避免沖突方面實(shí)施不同程度的關(guān)注。(如果使用某個(gè)值填充 rowset
后更改了數(shù)據(jù)源中的該值,則會(huì)發(fā)生沖突。)<CODE>RIOptimisticProvider</CODE>
實(shí)現(xiàn)假定沖突很少或沒有沖突,因此不設(shè)置鎖定。僅在沒有沖突時(shí),它才使用取自 <CODE>CachedRowSet</CODE> 對象的值更新數(shù)據(jù)源。也可以實(shí)現(xiàn)其他
writer,使其始終可將修改后的數(shù)據(jù)寫入數(shù)據(jù)源,這可以通過不檢查沖突來實(shí)現(xiàn),或者從另一個(gè)方面著手,即通過設(shè)置足夠的鎖定來防止對數(shù)據(jù)源中的數(shù)據(jù)進(jìn)行更改。這兩種
writer 之間還可以有其他 writer 實(shí)現(xiàn)。
<P><CODE>CachedRowSet</CODE> 對象可以使用任何已向 <CODE>SyncFactory</CODE> 單件注冊的
<CODE>SyncProvider</CODE> 實(shí)現(xiàn)。通過調(diào)用以下代碼行,應(yīng)用程序可以找到已注冊的 <CODE>SyncProvider</CODE>
實(shí)現(xiàn)。 <PRE> java.util.Enumeration providers = SyncFactory.getRegisteredProviders();
</PRE>
<P><CODE>CachedRowSet</CODE> 對象可使用兩種方式來指定它將使用的 <CODE>SyncProvider</CODE> 對象。
<UL) <LI>向構(gòu)造方法提供實(shí)現(xiàn)名<BR>以下代碼行創(chuàng)建 <CODE>CachedRowSet</CODE> 對象
<I>crs2</I>,使用默認(rèn)值初始化該對象,但其 <CODE>SyncProvider</CODE> 對象是指定的。 <PRE> CachedRowSetImpl crs2 = new CachedRowSetImpl(
"com.fred.providers.HighAvailabilityProvider");
</PRE>
<LI>使用 <CODE>CachedRowSet</CODE> 方法 <CODE>setSyncProvider</CODE> 設(shè)置
<CODE>SyncProvider</CODE><BR>以下代碼行為 <I>crs</I> 重置 <CODE>SyncProvider</CODE> 對象,該
<CODE>CachedRowSet</CODE> 對象是使用默認(rèn)構(gòu)造方法創(chuàng)建的。 <PRE> crs.setSyncProvider("com.fred.providers.HighAvailabilityProvider");
</PRE></UL) <code 有關(guān)更多細(xì)節(jié),請參閱>SyncFactory</CODE> 和
<CODE>SyncProvider</CODE> 的注釋。
<P>
<H3>2.0 從 <CODE>CachedRowSet</CODE> 對象檢索數(shù)據(jù)</H3>從 <CODE>CachedRowSet</CODE>
對象檢索數(shù)據(jù)可使用繼承自 <CODE>ResultSet</CODE> 接口的獲取方法。以下示例(其中 <CODE>crs</CODE> 是一個(gè)
<CODE>CachedRowSet</CODE>
對象)演示了如何在各行中進(jìn)行迭代,檢索每行中的列值。第一個(gè)示例使用以列號(hào)為參數(shù)的獲取方法;第二個(gè)示例使用以列名為參數(shù)的獲取方法。當(dāng)
<CODE>RowSet</CODE> 對象的命令是 <CODE>SELECT * FROM TABLENAME</CODE>
形式時(shí)通常使用列號(hào);當(dāng)命令通過名稱指定列時(shí)則通常使用列名。 <PRE> while (crs.next()) {
String name = crs.getString(1);
int id = crs.getInt(2);
Clob comment = crs.getClob(3);
short dept = crs.getShort(4);
System.out.println(name + " " + id + " " + comment + " " + dept);
}
</PRE><PRE> while (crs.next()) {
String name = crs.getString("NAME");
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -