vb.net中SqlConnection关闭的问题
假设一个过程中打开了SqlConnection,是不是过程结束时SqlConnection会自动关闭?
现有如下代码
Function select_dbf(ByVal t_query As String)
'查询数据库过程
Dim conn_all As New SqlConnection
conn_all.ConnectionString = "..... "
Dim t_Command As New SqlCommand(t_query)
t_Command.Connection = conn_all
conn_all.Open()
Dim t_Reader As SqlDataReader = t_Command.ExecuteReader()
Return t_Reader
End Function
返回时SqlConnection会关闭吗?如果关闭了,SqlDataReader 应该不能使用了啊,但是如果没有关闭,会不会占用资源,怎么关闭它呢?
[解决办法]
不关,.net会自动关,建议手动关.
推荐:
sqlHelper
[解决办法]
假设一个过程中打开了SqlConnection,是不是过程结束时SqlConnection会自动关闭?
=========================================================================
SqlConnection不会自动关闭,如果自己关闭了SqlConnection,那么SqlDataReader肯定会关闭,因为SqlDataReader是独占连接的
所以说,用一个函数返回SqlDataReader是不大好的,一般层与层之间调用返回的大多是DataSet
[解决办法]
用 下面的 可以确保关闭
using conn_all as new sqlconnection
try
end try
end using
[解决办法]
conn_all 是个SqlConnection对象,他有作用域的,你既然在过程中创建了这个对象,那么当这个过程结束时conn_all 就会消亡.如何关闭SqlConnection对象?见下面:
If conn_all.State=ConnectionState.Open Then
conn_all.Close()
End If