SqlConnection对象关闭后 数据库端还能看到联接
SqlConnection对象关闭后 数据库端还能看到连接
我建立了一个简单窗体Form1 上面只有一个Button2
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim sCn As New SqlConnection(strConnect)
sCn.Open()
do something ‘一些简单的 无关的数据操作
sCn.Close()
End Sub
但是我看到SQL SERVER2005\express的活动监视器里总是有这个连接。
只要把这个程序关闭,连接马上没了。
这个是什么问题? 那里需要特别注意的吗?
------解决方案--------------------
与之类似,什么“Dispose释放资源”的说法也是瞎想象出来的“资源”。这就有些人说一些词儿,主要是因为它“看起来挺厉害”的原因,而不是因为他研究了相应类型的Dispose方法代码里到底执行了什么。
Dispose代码里,不过是去执行Close。而你已经显式地执行了Close了,你再去执行Dispose显然是画蛇添足。何况Close方法本身也根本就并不切断进程里跟数据库的连接。
------解决方案--------------------
SqlConnection确实会维护一个连接池。以便于下次连接时直接使用现有连接加快速度。
使用 SqlConnection.ClearPool(sCn) 你再看看还有没有连接。
我建立了一个简单窗体Form1 上面只有一个Button2
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim sCn As New SqlConnection(strConnect)
sCn.Open()
do something ‘一些简单的 无关的数据操作
sCn.Close()
End Sub
但是我看到SQL SERVER2005\express的活动监视器里总是有这个连接。
只要把这个程序关闭,连接马上没了。
这个是什么问题? 那里需要特别注意的吗?
------解决方案--------------------
与之类似,什么“Dispose释放资源”的说法也是瞎想象出来的“资源”。这就有些人说一些词儿,主要是因为它“看起来挺厉害”的原因,而不是因为他研究了相应类型的Dispose方法代码里到底执行了什么。
Dispose代码里,不过是去执行Close。而你已经显式地执行了Close了,你再去执行Dispose显然是画蛇添足。何况Close方法本身也根本就并不切断进程里跟数据库的连接。
------解决方案--------------------
SqlConnection确实会维护一个连接池。以便于下次连接时直接使用现有连接加快速度。
使用 SqlConnection.ClearPool(sCn) 你再看看还有没有连接。