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

📄 利用 db2 udb 来使用 java cachedrowset 实现.htm

📁 Sun的高速缓存CachedRowSet方案资料档
💻 HTM
📖 第 1 页 / 共 2 页
字号:
            crs.getString("firstname") + " " +

            crs.getString("lastname"));

            }

            System.out.println("---------------------------");

            </CODE></PRE></TD></TR></TBODY></TABLE>
            <P>在上面的代码中,我创建了一个 <CODE><FONT 
            face=新宋体>com.sun.rowset.CachedRowSetImpl</FONT></CODE> 对象。注意我是如何为 
            <CODE><FONT face=新宋体>CachedRowsetImpl</FONT></CODE> 对象指定数据库连接信息的。我用 
            <CODE><FONT face=新宋体>setCommand</FONT></CODE> 方法来指定想要执行的查询。当发出 
            <CODE><FONT face=新宋体>execute</FONT></CODE> 方法时,就会填充 <CODE><FONT 
            face=新宋体>CachedRowSetImpl</FONT></CODE> 
            对象。就是在该方法调用中,我们获得然后再关闭数据库连接。然后我可以在对象中迭代,并使用 getter 方法来抽取和报告其中包含的数据。 
            </P>
            <P>正如前面所提到的, <CODE><FONT face=新宋体>CachedRowSetImpl</FONT></CODE> 
            对象是可滚动的。下面的代码例示了这项功能,我在该代码中使用 <CODE><FONT 
            face=新宋体>last()</FONT></CODE> 和 <CODE><FONT 
            face=新宋体>previous()</FONT></CODE> 方法在数据间前后滚动。 </P>
            <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
            border=1>
              <TBODY>
              <TR>
                <TD><PRE><CODE>

            System.out.println("Showcase scrollability");

            // move backwards through rowset

            // scroll to last row

            crs.last();

            // iterate to next row

            while (crs.previous())

            {

            // report current row contents

            System.out.println(crs.getRow() + " - " + crs.getString("lastname"));

            }

            </CODE></PRE></TD></TR></TBODY></TABLE>
            <P>方法 <CODE><FONT face=新宋体>first()</FONT></CODE> 和 <CODE><FONT 
            face=新宋体>next()</FONT></CODE> 也可用于在数据间滚动。 </P>
            <P>为了演示从数据库断开连接的能力,示例程序设计为暂停,并让您实际地执行生动的操作,即停止 DB2,以真正了解 <CODE><FONT 
            face=新宋体>CachedRowSet</FONT></CODE> 功能的优势。在继续操作(由完成 <CODE><FONT 
            face=新宋体>BufferedReader</FONT></CODE> 对象的一个简单 <CODE><FONT 
            face=新宋体>readLine</FONT></CODE> 而推动)之前,应用程序等待按下任意键。当示例程序提示您停止 DB2 
            时,可以在一个新的 DB2 命令行处理器窗口中使用下面的命令: </P>
            <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
            border=1>
              <TBODY>
              <TR>
                <TD><PRE><CODE>

            db2 force applications all

            </CODE></PRE></TD></TR></TBODY></TABLE>
            <P>然后再使用</P>
            <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
            border=1>
              <TBODY>
              <TR>
                <TD><PRE><CODE>

            db2stop

            </CODE></PRE></TD></TR></TBODY></TABLE>
            <P>来强迫 DB2 的停止。</P>
            <P>尽管数据库已经停止,但是下面的代码必须执行:</P>
            <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
            border=1>
              <TBODY>
              <TR>
                <TD><PRE><CODE>

            System.out.println("Demonstration of how to update cached row set");

            crs.updateString("lastname","Kaur");

            // commit changes to cached portion of rowset

            crs.updateRow();

            System.out.println(crs.getRow() + " - " + crs.getString("lastname"));

            </CODE></PRE></TD></TR></TBODY></TABLE>
            <P>在上面的代码中,我们更改了当前行条目的 last name 字段。注意,对 <CODE><FONT 
            face=新宋体>CachedRowSetImpl</FONT></CODE> 对象使用了 <CODE><FONT 
            face=新宋体>updateRow()</FONT></CODE> 
            方法,以记录对该对象的更改。在这一时间点,数据库还没有被更新。正如您可以回想起的,数据库 <I 
            xmlns:dw="http://www.ibm.com/developerworks/" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">甚至没有运行</I>。应用程序将提示您启动 
            DB2。为此,可以从 DB2 命令行处理器发出下面的命令: </P>
            <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
            border=1>
              <TBODY>
              <TR>
                <TD><PRE><CODE>

            db2start

            </CODE></PRE></TD></TR></TBODY></TABLE>
            <P>在 DB2 启动之后,按任意键继续示例应用程序。</P>
            <P>此时,下面的代码将会运行,这将有效地在数据库中同步更改。</P>
            <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
            border=1>
              <TBODY>
              <TR>
                <TD><PRE><CODE>

            crs.acceptChanges();

            </CODE></PRE></TD></TR></TBODY></TABLE>
            <P>通过对 cachetbl 执行一个选择查询,可以确认数据库实际上已经更新,如 图 1所示: </P>
            <P><B>图 1. 确认更新更改已经与数据库同步</B><BR><IMG height=200 alt=确认更新更改已经与数据库同步 
            src="利用 DB2 UDB 来使用 Java CachedRowSet 实现.files/figure1.gif" 
            width=600 xmlns:dw="http://www.ibm.com/developerworks/" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> </P>
            <P>为了结束我们对 <CODE><FONT face=新宋体>CachedRowSet</FONT></CODE> 
            的动手研究,示例应用程序还演示了如何插入和删除行。要执行插入,必须将光标移动到一个叫做“插入行”的特殊位置。在这里,我们使用更新方法来填充新行。当我们使用 
            <CODE><FONT face=新宋体>insertRow()</FONT></CODE> 方法时, <CODE><FONT 
            face=新宋体>CachedRowSetImpl</FONT></CODE> 对象就会被更新。当执行 <CODE><FONT 
            face=新宋体>acceptChanges()</FONT></CODE> 方法时,更改就被持久地存储到数据库中。 </P>
            <P>以下代码演示了这一点:</P>
            <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
            border=1>
              <TBODY>
              <TR>
                <TD><PRE><CODE>

            // move the cursor to a blank row

            crs.moveToInsertRow();

            // populate the new row

            crs.updateInt(1,01234);

            crs.updateString(2,"Judith");

            crs.updateString(3,"Smith");

            // insert the new row

            crs.insertRow();

            // move cursor back to previous position

            crs.moveToCurrentRow();

            // synchronize changes to database

            crs.acceptChanges();

            </CODE></PRE></TD></TR></TBODY></TABLE>
            <P>在插入完成之后程序将会暂停,以允许您在数据库中查询插入。</P>
            <P>从对象删除行相当直观。只需要将光标定位到想要删除的地方,然后使用 <CODE><FONT 
            face=新宋体>deleteRow</FONT></CODE> 方法即可。跟前面一样,需要一个后续的同步,以将更改持久存储到数据库中: 
            </P>
            <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
            border=1>
              <TBODY>
              <TR>
                <TD><PRE><CODE>

            // delete row (where the cursor is currently positioned)

            crs.deleteRow();

            // synchronize changes to database

            crs.acceptChanges();

            </CODE></PRE></TD></TR></TBODY></TABLE>
            <P><SPAN class=atitle2>只是一种实现</SPAN><BR>读者应该注意, <CODE><FONT 
            face=新宋体>javax.sql.RowSet</FONT></CODE> 接口的 <CODE><FONT 
            face=新宋体>CachedRowSetImpl</FONT></CODE> 
            实现只是一种实现(更确切地说是参考实现)。其他供应商也拥有 <CODE><FONT 
            face=新宋体>RowSet</FONT></CODE> 
            的实现,这些实现与参考实现处理问题(比如数据完整性)的方式可能会不同(例如,第三方实现可能会对服务器进行锁维护)。 </P>
            <P><SPAN class=atitle2>普遍含义</SPAN><BR>可更新的“断开连接的” <CODE><FONT 
            face=新宋体>ResultSets</FONT></CODE> 在普遍世界中具有各种含义,其中,网络连接可以是断断续续的。使用 
            <CODE><FONT face=新宋体>CachedRowSet</FONT></CODE> 
            可以允许客户机在连接可用时将数据缓存在本地,然后重新连接,以同步对数据执行的更改。 </P>
            <P><SPAN 
            class=atitle2>谨慎使用</SPAN><BR>断开连接具有其优点。但是用户必须理解,断开连接的对象是保存在内存中。因此,不应该使用具有大型结果集的方法。大型结果集的相应更新和滚动会是耗资源的操作。</P>
            <P><SPAN class=atitle2>结束语</SPAN><BR>与标准 JDBC 2.0 <CODE><FONT 
            face=新宋体>ResultSet</FONT></CODE> 不一样,利用 <CODE><FONT 
            face=新宋体>CachedRowSet</FONT></CODE> 
            不再需要连续使用数据库连接。因为数据库连接池中的数据库连接是宝贵的资源,所以连接数据库、断开连接,然后重新连接以便同步数据库,这种能力无疑是非常受欢迎的。 
            </P></DIV><BR> 
            <DIV id=div_info_nextInfo><A class=color_nextInfo 
            href="http://www.itjc.cn/html_info/176151.htm">用户自定义聚集函数提供分组支持</A></DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<SCRIPT language=javascript 
src="利用 DB2 UDB 来使用 Java CachedRowSet 实现.files/bottom.js"></SCRIPT>
</BODY></HTML>

⌨️ 快捷键说明

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