ASP对象中的<object>标签而不是Server.CreateObject否定了使用set variable = nothing?</object>

时间:2012-10-31 18:12:42

标签: asp-classic vbscript ado

所以,如果你使用

,我在老派的ASP Classic中学到了这一点

<object runat="server" id="somename" progid="ADODB.Recordset"></object>

标记它提供了比使用

更好的性能
set rs = Server.CreateObject("ADODB.Recordset")

但是,当我尝试执行时,所有内容都丢失了。 set rs = nothing这是预期的行为吗?那个标签是否能让asp更好地处理对象?

1 个答案:

答案 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关闭对象,一旦页面加载完成(例如页面范围完成),对象就会自行终止。

希望这有帮助。