回 帖 发 新 帖 刷新版面

主题:ado的记录集使用之后的资源释放问题

ado打开并使用记录集之后用close关闭记录集

之后是否需要在用类似asp里面的Set Rs=nothing的语句释放资源?

例如
set rs=new recordset
rs.open .....
rs.add
..
..
..
rs.update

rs.close

[color=800000]set rs=nothing  '这一句需不需要? 是不是就是该这样写?[/color]

回复列表 (共8个回复)

沙发

好像 set rs = nothing  和 rs.close作用相同。

板凳

set rs = nothing
比较好!~

3 楼

楼上的两位大哥
rs.close

set rs=nothing

这两句是否需要同时出现呢?

4 楼

rs.close
set rs=nothing
可以,不过要有次序!~为什么,调试后就知道了!~

5 楼

两句都要,close只是关闭数据集对象,但是rs本身是个Object型的对象,很占内存的,Set rs = Nothing就把它所占用的内存释放了。

6 楼

ToT 感谢我们的析构函数!~

7 楼

楼上兄弟的意思是Set xxx = Nothing相当于C++的析构函数?从C++角度来说,这句相当于delete rs,然后析构函数确实会被调用!

8 楼

在正常操作中rs.close加上set rs=nothing应该是比较规范的代码
当数据操作中出现错误时,rs.close有可能不能被执行,这个时候set rs=nothing应该是十分必要的
我一般用如下结构:

on error goto err_app:
    rs.open.......
    '..........
    rs.close
err_exit:
    set rs=nothing
    exit sub
err_app:
    msgbox err.description
    resume err_exit

我来回复

您尚未登录,请登录后再回复。点此登录或注册