Неважно, если вы закроете соединение или нет.SQL Server достаточно устойчив к длительным незакрытым соединениям, но если вы, например, используете Access, вы быстро исчерпаете доступные соединения и получите сообщение об ошибке при попытке соединения.
У вас есть объект соединения и командаПредмет, который является одноразовым, поэтому вы должны утилизировать его.Недостаточно выпустить их из области видимости, управление памятью .NET не работает таким образом.Интерфейс IDisposable предназначен для объектов с неуправляемыми ресурсами, которые необходимо очистить.
У большинства одноразовых объектов есть финализатор в качестве запасного варианта, если вам не удастся их утилизировать, поэтому в конечном итоге они будут очищены, но вы хотитеAviod это.Вы хотите избавиться от объектов как можно скорее, иначе они останутся в памяти, пока сборщик мусора не придет и не очистит их.
Блок Using
вокруг кода, в котором используется одноразовый объект, являетсяхороший способ убедиться, что он расположен правильно.Он использует блок Try...Finally
, чтобы гарантировать, что объект всегда располагается, даже если возникает ошибка.
<WebMethod()> _
Public Function ExecuteCMD() As Boolean
Using connection As New Data.SqlClient.SqlConnection
Try
connection.ConnectionString = "ConnectionString Here"
connection.Open()
Using command As New Data.SqlClient.SqlCommand("CommandText Here", connection)
command.ExecuteNonQuery()
End Using
Return True
Catch ex As Exception
Return False
End Try
End Using
End Function