SqlConnection.Close 与 SqlConnection.Dispose 调用谁更好?
时间:2011-03-09 来源:夜闻香
有时候像我这种菜鸟程序猿,因为对于数据库不熟悉,时常写出下面这种代码:
' 打开一个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行代码,我怎么觉得我有点...没事儿找抽啊...
相关阅读 更多 +