2010-11-21 163 views
0

我想知道,如果它是一個好主意,保持數據庫連接(System.Data.SqlClient.SqlConnection())開放或者是推薦使用後關閉連接,然後再次打開它需要的時候? (注意:我的應用會連續運行數天/月)。我有點被推向開放。哪種解決方案更好?C#連接到數據庫

回答

1

你絕對應該儘可能晚地打開你的連接,並儘快將其關閉。

不僅應該在完成時關閉它們,即使在緊密相關的命令之間也應該關閉它們,如果其間存在任何其他代碼。實際上,讓我這樣說:儘可能快速和頻繁地關閉您的ADO.NET Connection對象。 (也就是說,不要做明顯愚蠢的事情來關閉顯然不應該關閉的連接)

默認情況下,SQL Server的ADO.NET提供程序(以及大多數其他主要提供程序)提供連接池。這實際上會爲你管理這些連接的創建和銷燬 - 但只有當你完成後關閉它們。

如果換在using塊的連接對象的創建和使用,這是很容易做到......

using(SqlConnection conn = new SqlConnection(...)) 
{ 
    ///Open and use the connection 
} //the 'using' causes it to automatically be closed. 
+0

我找到了'using'塊誤導最後的代碼示例:'using'不會'。開()','也不.Close()'的連接,這些操作仍然需要手動完成。 – stakx 2010-11-21 14:41:09

+2

的'using'聲明導致自動關閉連接。有沒有需要顯式調用'關閉()'當你調用'的Dispose()',這是'using'構造做什麼。 – 2010-11-21 14:43:48

3

一般來說,處理它,當你用它做,不要擔心。

默認情況下,ADO.NET實現了connection pooling,因此連接在幕後保持打開狀態,以免您一直打開新連接時的性能損失。

另一個原因關閉在代碼中的連接 - 如果你失去連接到數據庫服務器,當你不使用的連接,你不會遇到一個錯誤,如果你保持連接可能出現這種情況。

0

打開的連接,如果你需要,不浪費資源;-)