主题:  关于释放对象的问题?

红卫兵

职务:普通成员
等级:1
金币:0.0
发贴:113
#12004/7/19 17:46:19
经常使用set conn=server.createobject("adodb.connection")
set rs=server.createobject("adodb.recordset")建立对象
使用完后又用conn.close
set conn=nothing
rs.close
set rs=nothing 释放对象,
但有一个疑问:
1.经常情况下可以不用conn.close和rs.close而直接用set conn=nothing和set rs=nothing关闭对象,不知道是否可取?
2.每次用recordset操作数据库都要建立一次connection和recordset对象,用完后
又关闭释放,然后下一次使用的时候又重新建立,无论同一个页面还是同一个访问过程都是这样的,不知道我这种认识对不对,有没有简单的办法?



红卫兵

职务:普通成员
等级:1
金币:0.0
发贴:113
#22004/7/20 8:51:13
怎么没有人回答呢?是偶的问题太过弱智,还是偶的问题太过刁站?
lemontree大哥?



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#32004/7/20 9:17:47
首先,如果想写出好的程序就不要偷工减料。

1.conn.close和set conn=nothing是不同的操作,前者是关闭与数据库的连接,后者是从内存中释放连接对象。前者使其在可能的情况下,能尽快释放资源以供其他连接使用;后者从内存中销毁对象所占用的空间。相对来说,前者更重要。rs与此类似。

2.这是个好习惯。有关性能损耗的问题可以由ADO的连接池解决,程序中不用关心这个。



mlzboy

职务:普通成员
等级:2
金币:2.0
发贴:317
#42004/7/20 9:29:57
set conn=nothing好像虽然你用了这个语句,但是真正释放要等到页面全部执行结束才会真正释放



红卫兵

职务:普通成员
等级:1
金币:0.0
发贴:113
#52004/7/20 10:44:50
谢谢,谢谢janlay和mlzboy