2017-06-16 69 views
0

我应该首先声明,我认为这个问题的答案是NO,但我想要求确定.....如果您在函数内部打开sqlconnection(使用USING块),并在到达块结束之前从该函数返回,那么该连接是否会被正确处理?在处理sqlconnection之前从函数返回

例如:

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 

将上述连接被布置如果适当地执行返回真实线的?

+3

试试吧,找出来。 – Servy

回答

2

如果你在一个函数内部(用一个USING块)打开一个sqlconnection,并在到达块结束之前从该函数返回,那么这个连接是否会被正确处理?

是的。绝对。这是USING块的美妙之处。请参阅

一个使用块的行为就像一个Try ...最后的构造,其中Try块使用资源,Finally块处理它们。正因为如此,无论您如何退出块,使用块都保证资源的处置,。这是真实的,即使在一个未处理的异常的情况下,除StackOverflowException

https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/using-statement

相关问题