在处理sqlconnection之前从函数返回

时间:2017-06-16 17:08:58

标签: sql vb.net

我首先应该说我假设这个问题的答案是否定的,但是我想要确定.....如果你在一个函数内部打开一个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

如果执行返回真行,上述连接是否会被正确处理?

1 个答案:

答案 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