黑马程序员技术交流社区

标题: 一个数据库连接对象conn,conn.close()和conn.dispose()的区别 [打印本页]

作者: 朱勋    时间: 2011-11-8 13:49
标题: 一个数据库连接对象conn,conn.close()和conn.dispose()的区别
一个数据库连接对象conn,conn.close()和conn.dispose()的区别是什么?
作者: liucaifu    时间: 2011-11-8 14:39
conn.close()是关闭数据库连接,conn.dispose()是释放数据库所占用的内存。
作者: 黄威    时间: 2011-11-8 15:07
conn.close()是关闭数据库连接的,关闭连接后还能再次连接,conn.dispose()是释放数据库所占的内存,不能重新连接数据库
作者: DotNet菜鸟    时间: 2011-11-8 16:04
Close 用来关闭 SQLConnection 对象打开的数据库连接,之后还可以 Open 之前的或另一个数据库连接,此时 SQLConnection 对象是实例,仍然占用着分配给它的资源
Displose 用来销毁对象,之后 SQLConnection 对象就没有了,成了 null,不可引用,所有分配给它的资源都被释放
作者: 朱陈伟    时间: 2011-11-16 00:18
使用Close方法关闭链接之后还是可以再次打开链接的,而使用Dispose方法来进行释放的话就不能再次打开链接了哦。。。。
作者: 张振鹏    时间: 2011-11-16 09:06
conn.close() 是关闭数据库连接,实际上是把连接放回ado.net的连接池,并没有真正关闭,所以再次连接时只是把连接从池中拿出来用,速度很快.      
conn.dispose() 是销毁连接,彻底关闭.
作者: 毕山山    时间: 2011-11-16 17:00
本帖最后由 毕山山 于 2011-11-16 17:01 编辑

在dispose()中,除了执行close()之外,还要查找SQLConnection所在的容器并移除其连接,并且要向其他引用此对象的对象发送事件。而一个   close()仅仅是关闭数据库连接,没有那么多额外的动作。
作者: 杨楠    时间: 2011-11-20 13:13
偶忽然想问一下,如果不dispose,系统会在大约多少次数据库连接后瘫痪。。。
作者: 王绚文    时间: 2011-11-21 09:26
本帖最后由 王绚文 于 2011-11-21 09:26 编辑

dispose后数据库连接将不能再open
close后 数据库连接还可以继续iopen

-------------------
要看你数据库服务器的性能
作者: 9881008杜鹏    时间: 2011-11-21 12:05
conn.dispose通过反编译器事实上里面已经进过了一次conn.close,但是它添加了一个功能是释放这个sql操作占用的内存资源
作者: 经睿    时间: 2011-11-22 10:48
close()是关水龙头,dispose()是撤水管儿
关了水龙头还可以开,撤了水管儿就open()不了了哦{:soso_e113:}
作者: 许前刚    时间: 2011-11-22 13:20
通俗一点,conn就好比两个城市间的一条公路,conn.close();是要关闭这条公路,不允许通车了,但以后还可以在开放,也就是还可以conn.Open();但conn.Dispose();则是把这条公路都给毁了,想再Open也不行了,除非重新建立conn的链接!
作者: Luck_c    时间: 2011-11-22 15:21
回8楼  如果你一直open()数据库不关闭 ,在你第二次试图open()的时候会抛出异常。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2