A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐传任 中级黑马   /  2012-9-16 17:01  /  1439 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天看老师的视频,有个地方不是很明白,创建一个SqlConnection的对象con,当con.Colse()时在con.Open()程序会正常执行,当con.Dispose()时,会提示ConnectionString 属性尚未初始化。我有点不明白.

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 梁健1 于 2012-9-16 17:30 编辑

不好意思,搞错了
回复 使用道具 举报
为了释放数据库连接池的资源,仅需要执行close,执行dispose是多余的。
执行Close()不释放数据库连接池的资源,而是把连接放回连接池中待用;
Dispose则会把这个连接彻底销毁掉,不会再放入连接池。如果所有的连接都被Dispose的话,每次使用数据库都必须重新创建连接,这样很耗费资源。因此不要用Dispose。
.NET会维护连接池,连接Open的时候从连接池中取出一个没有使用的连接,用完以后Close()的时候再放回连接池,实际上没有创建新的连接,从而提高了性能。 因此为了性能,为了使用连接池,不可以dispose,但必须close() 。
.NET中所有创建的对象有垃圾收集器进行管理,因些也不需要我们手动释放或dispose。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
谢谢了。。
回复 使用道具 举报
可以从字面理解并记忆
colose关闭 Dispose处理
一个是把con对象关闭掉
一个是把con对象处理掉
关闭掉是可以找到的,但处理掉就没有这个对象了。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
简单的说就是   close()关闭则还可以打开。用dispose相当于直接炸毁了就没得开了!
所以说用using 释放还是最科学 !或者你最后close完了再 dispose

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
是的,con.close(),关闭后还可再con.open()打看,
con.close()适合在每一个连接SQL数据库之后执行,已关闭连接,
而con.Dispose要在最后执行,因为如果执行后就没了,
不知道你明白了么

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马