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

📄 使用cachedrowset实现数据库的断接.htm

📁 Sun的高速缓存CachedRowSet方案资料档
💻 HTM
📖 第 1 页 / 共 4 页
字号:
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowSet.updateString(2, 
                              "(111) <BR>111-1111"); // initialize phone 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowSet.insertRow(); 
                              // insert the <BR>row 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowSet.moveToCurrentRow(); 
                              // move <BR>back to previous cursor position 
                              <BR><BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;moveToInsertRow()将游标移动到可能包含初始列值的空白行。调用insertRow()将新行插入到游标最近位置的后面。然后,在调用其它导航命令之前调用moveToCurrentRow()重置游标位置。最后,必须为RowSet调用acceptChanges()以更新数据库。将它应用到JSP中可能需要一些修改,大多数记录的entry/edit表单按照下面的步骤插入行: 
                              <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>
                              <LI>在当前游标的位置后面插入一个新的行<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>
                              <LI>将所有字段初始化为空<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>
                              <LI>在表单中显示新插入的行,以便用户进行编辑或保存<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;要加入记录插入功能,您的JSP需要监听一个新的请求参数"insert"。下面就是JSP页面的插入操作代码: 
                              <BR><BR><BR>&nbsp;&nbsp;} else if ( 
                              req.getParameter("insert") != <BR>null) { 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Contacts.moveToInsertRow(); 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Contacts.updateString(1, 
                              ""); 
                              <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Contacts.updateString(2, 
                              ""); 
                              <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Contacts.insertRow(); 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Contacts.moveToCurrentRow(); 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Contacts.next(); 
                              <BR><BR>&nbsp;&nbsp;} 
                              <BR><BR><BR><BR><B>CachedRowSet 
                              的其它用途</B><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;对缓冲ResultSet扩展的需求远远不只限制在JSP的开发中,CachedRowSet适合于需要将表格数据进行串行化并发送到客户端的任何一种情况,如移动计算设备。虽然用户可能周期地断开网络数据源,但它们仍然有填加和维护数据的需求。可以使用CachedRowSet作为从EJB会话bean中存取/更新数据的一种方法。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;记住,CachedRowSet完全在存储器中存储,如果应用程序需要对非常大的数据集进行操作,CachedRowSet显然不是最佳选择。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;清单4显示了以CachedRowSet为数据模型的一个完整的JSP 
                              entry/edit页面代码。为清晰起见,我在JSP页面中加入了数据模型初始化代码,这些代码在useBean标签中体现。 
                              <BR>在更大型的工程应用中,我建议遵从MVC 
                              (Model-View-Controller)准则,将数据模型初始化代码放在一个servlet控制器中。<BR><BR><BR><BR><B>清单4:JSP示例update/entry表单</B><BR><BR><BR><BR>&lt;%@ 
                              page import="sun.jdbc.rowset.CachedRowSet" %&gt; 
                              <BR><BR><BR>&lt;HTML&gt; <BR><BR>&lt;HEAD&gt; 
                              <BR><BR>&lt;jsp:useBean id="Contacts" 
                              class="sun.jdbc.rowset.CachedRowSet" 
                              <BR>scope="session"&gt; <BR><BR>&lt;% 
                              <BR><BR>&nbsp;&nbsp;Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
                              <BR><BR><BR>&nbsp;&nbsp;// initialize our 
                              CachedRowSet bean 
                              <BR><BR>&nbsp;&nbsp;Contacts.setUsername("user"); 
                              <BR><BR>&nbsp;&nbsp;Contacts.setPassword("password"); 
                              <BR><BR>&nbsp;&nbsp;Contacts.setUrl("jdbc:odbc:mydsn"); 
                              <BR><BR>&nbsp;&nbsp;// some drivers require this 
                              <BR><BR>&nbsp;&nbsp;Contacts.setTableName("Contacts"); 
                              <BR><BR>&nbsp;&nbsp;Contacts.setCommand("SELECT 
                              name, telephone from <BR>Contacts"); 
                              <BR><BR>&nbsp;&nbsp;Contacts.execute(); 
                              <BR><BR>&nbsp;&nbsp;Contacts.first(); 
                              <BR><BR>%&gt; <BR><BR>&lt;/jsp:useBean&gt; 
                              <BR><BR><BR><BR>&lt;% <BR><BR>&nbsp;&nbsp;// get 
                              the servlet request object 
                              <BR><BR>&nbsp;&nbsp;javax.servlet.ServletRequest 
                              req = pageContext.getRequest(); 
                              <BR><BR><BR><BR><BR>&nbsp;&nbsp;// process updates 
                              <BR><BR>&nbsp;&nbsp;boolean updateRow = false; 
                              <BR><BR>&nbsp;&nbsp;String contactName = 
                              Contacts.getString(1); <BR><BR>&nbsp;&nbsp;String 
                              newValue = req.getParameter("ContactName"); 
                              <BR><BR><BR>&nbsp;&nbsp;if (( newValue != null) 
                              &amp;&amp; (!newValue.equals( <BR>contactName ))) 
                              { 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Contacts.updateString( 
                              1,req.getParameter("ContactName")); 
                              <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;updateRow = 
                              true; <BR><BR>&nbsp;&nbsp;} 
                              <BR><BR>&nbsp;&nbsp;String contactPhone = 
                              Contacts.getString(2); 
                              <BR><BR>&nbsp;&nbsp;newValue = 
                              req.getParameter("ContactPhone"); 
                              <BR><BR><BR>&nbsp;&nbsp;if (( newValue != null) 
                              &amp;&amp; (!newValue.equals(contactPhone))) <BR>{ 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Contacts.updateString( 
                              2,req.getParameter("ContactPhone")); 
                              <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;updateRow = 
                              true; <BR><BR>&nbsp;&nbsp;} <BR><BR>&nbsp;&nbsp;if 
                              (updateRow) Contacts.updateRow(); 
                              <BR><BR><BR><BR>&nbsp;&nbsp;// process navigation 
                              commands <BR><BR>&nbsp;&nbsp;if ( 
                              req.getParameter("next") != null ) { 
                              <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if (! 
                              Contacts.next() ) Contacts.last(); 
                              <BR><BR><BR>&nbsp;&nbsp;} else if ( 
                              req.getParameter("prev") != null) <BR>{ 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if (! 
                              Contacts.previous()) Contacts.first(); 
                              <BR><BR><BR>&nbsp;&nbsp;} else if ( 
                              req.getParameter("save") != null) <BR>{ 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Contacts.acceptChanges(); 
                              <BR><BR>&nbsp;&nbsp;} else if ( 
                              req.getParameter("insert") != <BR>null) { 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Contacts.moveToInsertRow(); 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Contacts.updateString(1, 
                              ""); 
                              <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Contacts.updateString(2, 
                              ""); 
                              <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Contacts.insertRow(); 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Contacts.moveToCurrentRow(); 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Contacts.next(); 
                              <BR><BR>&nbsp;&nbsp;} else if ( 
                              req.getParameter("delete") != <BR>null) { 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Contacts.deleteRow(); 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if 
                              (!Contacts.next()) Contacts.last(); 
                              <BR><BR>&nbsp;&nbsp;} <BR><BR>%&gt; 
                              <BR><BR>&lt;STYLE&gt; <BR><BR>&nbsp;&nbsp;BODY { 
                              font-style: verdana } <BR><BR>&lt;/STYLE&gt; 
                              <BR><BR>&lt;TITLE&gt; <BR><BR>CachedRowSetExample 
                              <BR><BR>&lt;/TITLE&gt; <BR><BR>&lt;/HEAD&gt; 
                              <BR><BR>&lt;BODY BGCOLOR='lightgrey'&gt; 
                              <BR><BR>&lt;H2&gt;Contacts&lt;/H2&gt; 
                              <BR><BR>&lt;FORM&gt; <BR><BR>&lt;TABLE 
                              BORDER='0'&gt; 
                              <BR><BR>&lt;TR&gt;&lt;TD&gt;Name:&lt;/TD&gt;&lt;TD&gt;Telephone 
                              number:&lt;/TD&gt;&lt;/TR&gt; 
                              <BR><BR><BR>&lt;TR&gt; <BR><BR>&lt;TD&gt;&lt;INPUT 
                              TYPE='text' 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NAME="ContactName" 
                              <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VALUE='&lt;%=Contacts.getString(1)%&gt;' 
                              <BR>/&gt;&lt;/TD&gt; <BR><BR>&lt;TD&gt;&lt;INPUT 
                              TYPE="text" 
                              <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NAME="ContactPhone" 
                              <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VALUE='&lt;%=Contacts.getString(2)%&gt;' 
                              <BR>/&gt;&lt;/TD&gt; <BR><BR>&lt;/TABLE&gt; 
                              <BR><BR>&lt;INPUT TYPE="submit" NAME="prev" 
                              VALUE=" <BR>&lt; "/&gt; <BR><BR>&lt;INPUT 
                              TYPE="submit" NAME="next" VALUE=" <BR>&gt; "/&gt; 
                              <BR><BR>&lt;INPUT TYPE="submit" NAME="insert" 
                              VALUE="Insert"/&gt; <BR><BR><BR>&lt;INPUT 
                              TYPE="submit" NAME="delete" VALUE="Delete"/&gt; 
                              <BR><BR><BR>&lt;INPUT TYPE="submit" NAME="save" 
                              VALUE="Save"/&gt; <BR><BR><BR>Record 
                              &lt;%=Contacts.getRow()%&gt; of 
                              &lt;%=Contacts.size()%&gt; 
                              <BR><BR><BR>&lt;/FORM&gt; <BR><BR>&lt;/BODY&gt; 
                              <BR><BR>&lt;/HTML&gt; 
                              <BR><BR><BR><BR><BR><BR>下面的图片显示的是上面的JSP代码在浏览器中的显示结果。<BR><BR>
                              <CENTER><BR><IMG 
                              src=""><BR></CENTER><BR><BR><BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;清单4中的JSP在浏览器中的显式 
                              <BR><BR><BR>&nbsp;<BR><BR><B>结论</B><BR><BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;JSP应用要求一个数据缓冲中间层以改善连接资源的共享。由于对大部分的中小规模应用来说,EJB显得太大材小用了。CachedRowSet通过提供一种不捆绑数据库连接就可以实现对JDBC数据实现统一访问的方法填补了期间的空白。CachedRowSet还在典型的entry/edit 
                              <BR>JSP应用中简化了数据访问代码。上面的示例页面仅仅需要一个SQL语句就可以在数据库上实现更新、插入和删除。更重要的是,CachedRowSet对原始数据源进行任意的断接和重连。<BR><BR>&nbsp;&nbsp;&nbsp;<BR><BR>出处:www.javaworld.com 
                              </LI></TD>
                            <TD vAlign=top width="14%">
                              <DIV align=right><FONT 
                              color=gray>&nbsp;&nbsp;&nbsp;&nbsp;</FONT></DIV>
                              <SCRIPT type=text/javascript><!--
google_ad_client = "pub-1552958637257019";
google_ad_width = 160;

⌨️ 快捷键说明

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