我首先应该说我假设这个问题的答案是否定的,但是我想要确定.....如果你在一个函数内部打开一个sqlconnection(带有一个USING块),在到达块结束之前从该功能返回,该连接是否会被正确处理?
例如:
Public Function Myfunction() As Boolean
Dim ConnectionString As String = "connectionstring goes here"
Dim sql As String = "SELECT * FROM mytable"
Using connection As New SqlClient.SqlConnection(ConnectionString)
Using command As New SqlClient.SqlCommand(sql, connection)
connection.Open()
Using reader As SqlClient.SqlDataReader = command.ExecuteReader
While reader.Read
Return True
End While
End Using
End Using
End Using
Return False
End Function
如果执行返回真行,上述连接是否会被正确处理?
答案 0 :(得分:2)
如果在函数内部(使用USING块)打开sqlconnection,并在到达块结束之前从该函数返回,那么该连接是否会被正确处理?
是。绝对。这是USING块的美妙之处。参见
Using块的行为类似于Try ... Finally构造,其中Try块使用资源而Finally块处理它们。因此,使用块可以保证资源的处理,无论您如何退出块。即使在未处理的异常的情况下也是如此,除了StackOverflowException
https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/using-statement