⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cachedrowset.htm

📁 Sun的高速缓存CachedRowSet方案资料档
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<!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=跳过导航链接 
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>&nbsp;</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>&nbsp;</TD>
          <TD class=NavBarCell1Rev bgColor=#ffffff>&nbsp;<FONT 
            class=NavBarFont1Rev><B>类</B></FONT>&nbsp;</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>&nbsp;</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>&nbsp;</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>已过时</B></FONT></A>&nbsp;</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>&nbsp;</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>&nbsp;</TD></TR></TBODY></TABLE></TD>
    <TD vAlign=top align=right rowSpan=3><EM><B>Java<SUP><FONT 
      size=-2>TM</FONT></SUP>&nbsp;2&nbsp;Platform<BR>Standard&nbsp;Ed. 
      5.0</B></EM> </TD></TR>
  <TR>
    <TD class=NavBarCell2 bgColor=white><FONT size=-2>&nbsp;<A 
      title="javax.sql.rowset 中的类" 
      href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/BaseRowSet.html"><B>上一个类</B></A>&nbsp; 
      &nbsp;<A title="javax.sql.rowset 中的接口" 
      href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/FilteredRowSet.html"><B>下一个类</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> &nbsp; &nbsp;<A 
      href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/CachedRowSet.html" 
      target=_top><B>无框架</B></A> &nbsp; &nbsp;
      <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>摘要:&nbsp;嵌套&nbsp;|&nbsp;<A 
      href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/CachedRowSet.html#field_summary">字段</A>&nbsp;|&nbsp;构造方法&nbsp;|&nbsp;<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>详细信息:&nbsp;<A 
      href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/sql/rowset/CachedRowSet.html#field_detail">字段</A>&nbsp;|&nbsp;构造方法&nbsp;|&nbsp;<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>所有标准 <CODE>CachedRowSet</CODE> 实现都必须实现的接口。 
<P>Sun Microsystems 提供的 <CODE>CachedRowSet</CODE> 
接口的参考实现是一个标准实现。开发人员可以按原样使用此实现、可以扩展它,也可以选择自己编写此接口的实现。 
<P><CODE>CachedRowSet</CODE> 对象是一个数据行的容器,可在内存中缓存其各行,这使得进行操作时无需总是连接到数据源。此外,它还是一个 
JavaBeans<SUP><FONT size=-2>TM</FONT></SUP> 
组件,是可滚动、可更新、可序列化的。<CODE>CachedRowSet</CODE> 
对象通常包含结果集中的行,但它也可以包含任何具有表格式的文件(如电子表格)中的行。参考实现只支持从 <CODE>ResultSet</CODE> 
对象中获取数据,但是开发人员可以扩展 <CODE>SyncProvider</CODE> 实现,以提供对其他表格数据源的访问。 
<P>应用程序可以修改 <CODE>CachedRowSet</CODE> 对象中的数据,这些修改随后可以被传播回数据源。 
<P><CODE>CachedRowSet</CODE> 对象是一个<I>非连接</I> 
rowset,这意味着它只会短暂地连接其数据源。连接数据源发生在读取数据以用各行填充自身,以及将更改传播回其底层数据源时。其余时间 
<CODE>CachedRowSet</CODE> 对象是非连接的,包括修改它的数据时。非连接使 <CODE>RowSet</CODE> 
对象更为简洁,因此更容易传递给另一个组件。例如,非连接 <CODE>RowSet</CODE> 对象可以被序列化并通过导线传递到瘦客户端 (thin 
client),如个人数字助理(personal digital assistant,PDA)。 
<P>
<H3>1.0 创建 <CODE>CachedRowSet</CODE> 对象</H3>以下代码行使用参考实现 (RI) 中提供的默认 
<CODE>CachedRowSet</CODE> 构造方法来创建默认的 <CODE>CachedRowSet</CODE> 对象。 <PRE>     CachedRowSetImpl crs = new CachedRowSetImpl();
 </PRE>这一新 <CODE>CachedRowSet</CODE> 对象的属性设置为 <CODE>BaseRowSet</CODE> 
对象的默认属性,此外,它将 <CODE>RIOptimisticProvider</CODE> 
对象作为其同步提供程序。<CODE>RIOptimisticProvider</CODE>(RI 中包含的两个 
<CODE>SyncProvider</CODE> 实现之一)是在没有指定同步提供程序时,<CODE>SyncFactory</CODE> 单件 
(singleton) 将提供的默认提供程序。 
<P><CODE>SyncProvider</CODE> 对象提供了带有 reader 的(<CODE>RowSetReader</CODE> 对象)的 
<CODE>CachedRowSet</CODE> 对象,用于从数据源读取数据以便用该数据填充自身。可以实现 reader 从 
<CODE>ResultSet</CODE> 对象或者表格式的文件中读取数据。<CODE>SyncProvider</CODE> 对象还提供了 
writer(<CODE>RowSetWriter</CODE> 对象),用于同步在与底层数据源中的数据断开连接时对 
<CODE>CachedRowSet</CODE> 对象数据所做的任何更改。 
<P>可以实现 writer 以在检查和避免冲突方面实施不同程度的关注。(如果使用某个值填充 rowset 
后更改了数据源中的该值,则会发生冲突。)<CODE>RIOptimisticProvider</CODE> 
实现假定冲突很少或没有冲突,因此不设置锁定。仅在没有冲突时,它才使用取自 <CODE>CachedRowSet</CODE> 对象的值更新数据源。也可以实现其他 
writer,使其始终可将修改后的数据写入数据源,这可以通过不检查冲突来实现,或者从另一个方面着手,即通过设置足够的锁定来防止对数据源中的数据进行更改。这两种 
writer 之间还可以有其他 writer 实现。 
<P><CODE>CachedRowSet</CODE> 对象可以使用任何已向 <CODE>SyncFactory</CODE> 单件注册的 
<CODE>SyncProvider</CODE> 实现。通过调用以下代码行,应用程序可以找到已注册的 <CODE>SyncProvider</CODE> 
实现。 <PRE>      java.util.Enumeration providers = SyncFactory.getRegisteredProviders();
 </PRE>
<P><CODE>CachedRowSet</CODE> 对象可使用两种方式来指定它将使用的 <CODE>SyncProvider</CODE> 对象。 
<UL) <LI>向构造方法提供实现名<BR>以下代码行创建 <CODE>CachedRowSet</CODE> 对象 
<I>crs2</I>,使用默认值初始化该对象,但其 <CODE>SyncProvider</CODE> 对象是指定的。 <PRE>          CachedRowSetImpl crs2 = new CachedRowSetImpl(
                                 "com.fred.providers.HighAvailabilityProvider");
     </PRE>
<LI>使用 <CODE>CachedRowSet</CODE> 方法 <CODE>setSyncProvider</CODE> 设置 
<CODE>SyncProvider</CODE><BR>以下代码行为 <I>crs</I> 重置 <CODE>SyncProvider</CODE> 对象,该 
<CODE>CachedRowSet</CODE> 对象是使用默认构造方法创建的。 <PRE>           crs.setSyncProvider("com.fred.providers.HighAvailabilityProvider");
      </PRE></UL) <code 有关更多细节,请参阅>SyncFactory</CODE> 和 
<CODE>SyncProvider</CODE> 的注释。 
<P>
<H3>2.0 从 <CODE>CachedRowSet</CODE> 对象检索数据</H3>从 <CODE>CachedRowSet</CODE> 
对象检索数据可使用继承自 <CODE>ResultSet</CODE> 接口的获取方法。以下示例(其中 <CODE>crs</CODE> 是一个 
<CODE>CachedRowSet</CODE> 
对象)演示了如何在各行中进行迭代,检索每行中的列值。第一个示例使用以列号为参数的获取方法;第二个示例使用以列名为参数的获取方法。当 
<CODE>RowSet</CODE> 对象的命令是 <CODE>SELECT * FROM TABLENAME</CODE> 
形式时通常使用列号;当命令通过名称指定列时则通常使用列名。 <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");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -