我想知道是否這是一個很好的方式做數據訪問,在所有的數據庫對象被正確關閉和處置?例如:VB.NET:嵌套「使用」數據庫訪問
Using conn As New SqlConnection(MyConnectionString)
Using cmd As New SqlCommand("some SQL here", conn)
... add parameters ...
conn.Open()
Using dr As SqlDataReader = cmd.ExecuteReader()
While dr.Read()
... do stuff ...
Wend
End Using
End Using
End Using
嵌套Using
像可接受的實踐?如果我在Read()循環中的某個點退出方法,那麼像這樣使用Using
將確保所有對象都被正確清理,無論如何,
我從來不知道使用語句本質上是一個嘗試/最後。我總是用try/catch/finally來處理我的連接。 +1爲有用的提示。 – Tony318
聽起來不錯..如果我在任何時候明確地退出該方法,它仍然適用嗎?例如。如果我的SQL是一個'COUNT(*)FROM ...',我使用語句'Return cmd.ExecuteScalar()'。它會在'End Using's之前退出該方法,但是它仍然會清理嗎? –
是的,它應該按照正確的順序觸發所有的'finally'塊。 –