所以,如果你使用
,我在老派的ASP Classic中学到了这一点 <object runat="server" id="somename" progid="ADODB.Recordset"></object>
标记它提供了比使用
更好的性能set rs = Server.CreateObject("ADODB.Recordset")
但是,当我尝试执行时,所有内容都丢失了。 set rs = nothing
这是预期的行为吗?那个标签是否能让asp更好地处理对象?
答案 0 :(得分:1)
如果您直接在asp页面(而不是global.asax)中包含此对象声明,那么一旦页面请求结束,它就会终止。
如果您希望它们在会话或应用程序范围内持久存在,您还可以在global.asa文件中包含这些内容。
<OBJECT ID=rsCustomers PROGID="ADODB.Recordset" RUNAT="Server" SCOPE="Application"></OBJECT>
请注意SCOPE
属性。这会将记录集加载到应用程序变量中(根据您的使用情况,可以设置为“session”或“application”)。您可以在脚本中轻松销毁会话变量,如下所示:
Session.Abandon
或者如果你想杀死会话变量但是让会话保持打开状态,那么就像这样终止会话变量:
Set Session("rsCustomers") = Null
如果你只想要页面的RS对象,那么请省略scope属性,并在页面本身中包含对象声明。
id将作为常规变量提供,就像您直接在页面中的vbscript代码块中声明它一样。只需记住执行.close
关闭对象,一旦页面加载完成(例如页面范围完成),对象就会自行终止。
希望这有帮助。