本文档来自microsoft官方教程,www.aspxuexi.com整理。转载请著名出处。
Microsoft OLE DB Persistence Provider 支持使用 Recordset 对象的 Save 方法将 Recordset 对象保存在文件中。持久存储的文件可以存在于本地驱动器和网络服务器上,或者以 URL 形式存在于 Web 站点上。随后,用 Recordset 对象的 Open 方法或 Connection 对象的 Execute 方法可以恢复该文件。
此外,GetString 方法还将 Recordset 对象转换为一种以指定的字符分隔行和列的格式。
要使 Recordset 具有持久性,应先将其转换为可在文件中保存的格式。存储 Recordset 对象的格式既可以是专用的 Advanced Data TableGram (ADTG) 格式,也可以是开放的可扩展标记语言 (XML) 格式。
注意 以 XML 格式保存分级 Recordset(数据构形)时有两个限制条件:如果分级 Recordset 包含挂起更新,则不能以 XML 格式保存;也不能保存参数化的分级 Recordset。
然后将所有挂起更改保存到持久文件。这样,使用户可以发布返回 Recordset 对象的查询、编辑记录集、保存该记录集和挂起更改、以后恢复该记录集、然后再用所保存的挂起更改更新数据源。 //www.aspxuexi.com 域名标记 文档来源:microsoft 微软 官方教程
有关持久存储 Stream 对象的详细信息,请参阅流和持久性。
有关 Recordset 持久性的范例,请参阅 XML Recordset 持久性方案。
范例
保存 Recordset:
Dim rs as New ADODB.Recordset rs.Save "c:\yourFile.adtg", adPersistADTG
使用 Recordset.Open 打开持久文件:
Dim rs as New ADODB.Recordset rs.Open "c:\yourFile.adtg", "Provider=MSPersist",,,adCmdFile
可选,如果 Recordset 不包含活动的连接,那么您可以接受所有默认值并编写如下简单代码:
Dim rs as New ADODB.Recordset rs.Open "c:\yourFile.adtg"
使用 Connection.Execute 打开持久文件
Dim conn as New ADODB.Connection Dim rs as ADODB.Recordset conn.Open "Provider=MSPersist" Set rs = conn.execute("c:\yourFile.adtg")
用 RDS.DataControl 打开持久文件:
在本范例中,未设置 Server 属性。
Dim dc as New RDS.DataControl dc.Connection = "Provider=MSPersist" dc.SQL = "c:\yourFile.adtg" dc.Refresh
索引支持和查找、排序及过滤
对字段进行索引可以大大提高 Recordset 对象的 Find 方法以及 Sort 和 Filter 属性的性能。通过设置 Field 对象的动态 Optimize 属性可以创建该对象的内部索引。将 CursorLocation 属性设置为 adUseClient 时,此动态属性将被添加到 Field 对象的 Properties 集合中。请记住,此索引只在 ADO 内部使用,用户不能访问该索引或者将其用于任何其他目的。而且,此索引有别于 Recordset 对象的 Index 属性。
Sort 属性确定遍历 Recordset 行的顺序,Filter 属性确定遍历行时可访问的行,Find 方法在 Recordset 的列(字段)内快速定位值。用 Optimize 属性创建一个列的索引,通常可以提高对列执行 Find 方法的操作速度。
XML Recordset 持久性方案
在此方案中将创建 Active Server Pages (ASP) 应用程序,该程序将 Recordset 对象的内容直接保存到 ASP Response 对象中。
步骤 1:安装应用程序
创建具有脚本权限的名为“XMLPersist”的 IIS 虚拟目录。在该虚拟目录指向的文件夹中创建两个新文本文件,一个名为“XMLResponse.asp”,另一个名为“Default.htm”。
步骤 2:获取数据
在此步骤中用户将编写代码来打开 ADO Recordset 并准备将其发送到客户端。用文本编辑器(如 Windows 记事本)打开 XMLResponse.asp 文件并插入下列代码。
<%@ codepage="65001" %> <object id="rstCustomers" progid="ADODB.Recordset" runat="Server"> </object> <!-- metadata name="Microsoft ActiveX Data Objects 2.5 Library" type="TypeLib" uuid="{00000205-0000-0010-8000-00AA006D2EA4}" --> <% Option Explicit Response.Buffer = True
Dim strSQL, strConnection
Response.ContentType = "text/xml" Response.Expires = 0 Response.Buffer = False
strSQL="SELECT title_id, title, type FROM titles" & _ " ORDER By title"
strConnection = "Provider=MSDataShape;Data Provider=SQLOLEDB;" & _ "Database=Pubs;Data Source=SRV;User Id=sa;" & _ "Password=;"
rstCustomers.Open strSQL, strConnection, adOpenStatic, adLockBatchOptimistic
确保将 strConnection 中的数据源参数值更改为用户的 Microsoft SQL Server 的名称。该页的代码页设置为 65001 (Unicode),这样它将返回 XML。
使文件保持打开,继续执行下一步。
步骤 3:发送数据
既然有了 Recordset,就需要将其发送到客户端,方法是将该 Recordset 以 XML 格式保存到 ASP Response 对象。向 XMLResponse.asp 的底部添加下列代码。
Response.Write "<?xml version='1.0' encoding='ISO-8859-1'?>" & vbCRLF rstCustomers.save Response, adPersistXML rstCustomers.Close %> 请注意,ASP Response 对象被指定为 Recordset Save 方法的目标。Save 方法的目标可以是支持 IStream 接口的任何对象(如 ADO Stream 对象),或者是包含保存 Recordset 的完整路径的文件名。
执行下一个步骤之前,请先保存并关闭 XMLResponse.asp。
步骤 4:接收和显示数据
在此步骤中将使用指向 XMLResponse.asp 文件的嵌入的 RDS.DataControl 对象创建 HTML 文件,从而获得 Recordset。使用文本编辑器(如 Windows 记事本)打开 default.htm 并添加下面的代码。用服务器计算机名称替换 URL 中的“yourserver”。
<HTML> <HEAD><TITLE>ADO Recordset Persistence Sample</TITLE></HEAD> <BODY>
<OBJECT CLASSID="clsid:BD96C556-65A3-11D0-983A-00C04FC29E33" ID="RDC1" <PARAM NAME="URL" VALUE="http://yourserver/XMLPersist/XMLResponse.asp"> </OBJECT>
<TABLE DATASRC="#RDC1"> <TR> <TD><SPAN DATAFLD="title_id"></SPAN></TD> <TD><SPAN DATAFLD="title"></SPAN></TD> <TD><SPAN DATAFLD="type"></SPAN></TD> </TR> </TABLE> </BODY> </HTML>
保存并关闭 default.htm。使用 Internet Explorer 4.0 或更新版本打开 URL http://yourserver/XMLPersist/default.htm 并观察结果。数据显示在绑定的 DHTML 表中。现在打开 URL http://yourserver/XMLPersist/XMLResponse.asp 并观察结果。将显示 XML。
|