Рейтинг:
0
OriginalGriff
При нормальных обстоятельствах это не должно иметь значения - потому что это очень хорошая идея использовать Using
в любом случае блокируйте создание экземпляра:
Using con As New SqlConnection(Acc.Common.Configuration.Instance.ConnectionString)
con.Open()
Using com As New SqlCommand("SELECT iD, description FROM myTable", con)
...
End Using
End Using
Потому что это гарантирует, что соединение всегда будет закрыто и удалено, когда вы закончите с ним.
Потому что вы создаете его, открываете и используете-тогда система автоматически закрывается и избавляется от него.
Но...если соединение открыто, когда вы вызываете Open на нем, оно вызовет исключение InvalidOperationException
m.r.m.40
Спасибо за Ваше объяснение, но мой вопрос был о том, чтобы сначала проверить, открыт ли он уже! если это так, то ничего, если нет, то откройте его.
Зачем мне это делать?
Когда я могу просто написать conn. open()
OriginalGriff
Перечитайте последнее предложение еще раз...
m.r.m.40
Ой!
Извини, я был на работе и очень занят.
затем, прежде чем вызвать Open на нем, я должен проверить, открыт ли он уже или нет. верно?
OriginalGriff
Да ... но.....они являются дефицитными ресурсами, поэтому вы не должны "цепляться" за них - они должны быть созданы, открыты, использованы, закрыты и утилизированы. Если вы цепляетесь за них, вы можете вызвать худшие проблемы, чем если бы они были открыты при повторной попытке - например, при попытке создать DataReader в соединении, в котором уже открыт DataReader.
Самый простой способ сделать это-использовать блок Using, который удаляет его из области видимости, чтобы он не мог быть использован, когда он закрыт.
И если вы это сделаете, вопрос будет спорным, потому что он открывается только для определенной цели и закрывается, когда с ним разбираются.
m.r.m.40
Большое спасибо. это было прекрасное объяснение.
OriginalGriff
Пожалуйста!