SqlConnection.Close 与 SqlConnection.Dispose 调用谁更好?

SQL

有时候像我这种菜鸟程序猿,因为对于数据库不熟悉,时常写出下面这种代码:

 
  
' 打开一个SQL连接
Using conn As New SqlConnection( " ... " )
  conn.Open()
  
' ...
  conn.Close()
  conn.Dispose()
End Using

实际上这段代码是冗余的,给出最简单的代码

 
  
Using conn As New SqlConnection( " ... " )
  conn.Open()
  
' ...
End Using

是的,这段代码已经能正常的工作,并且,不需要担心数据库没有关闭。

====昏割线====

以前我一直都有一个疑问,在调用数据库连接之后,究竟是应该使用Close来关闭连接,还是用Dispose接口来释放资源?究竟它们之间的调用关系是什么样的?

带着这样的疑问,用Reflector打开了 System.Data.dll 文件,查看了 SqlConnection 的源码,发现实际上Dispose会主动调用自己的Close方法,这样在数据库连接实例将被销毁之时,主动关闭数据库的连接。

IDispose接口可以通过Using关键字实现使用后立刻销毁,因此,Dispose适合只在方法中调用一次SqlConnection对象,而Close更适合SqlConnection在关闭后可能需要再次打开的情况。

====昏割线====

嗯,经过这次分析与探索,老夫成功地省略了2行代码!!!

不过话说浪费10分钟省略2行代码,我怎么觉得我有点...没事儿找抽啊...

转载于:https://www.cnblogs.com/clso/archive/2011/03/09/1979261.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值