2011-03-28 60 views
1

是它是更好地打開連接到數據庫 -在我使用或不使用後關閉數據庫連接?

作任何querys ...更新....刪除 -

後,我用它來關閉此連接

當程序加載時打開連接 -

並關閉程序時關閉?

在此先感謝

+0

第二種方法是最大的反模式之一。請不要 – Marcote 2011-03-28 19:17:24

回答

6

一般情況下,您關閉在你的代碼(處置)儘快。用try/finallyusing塊。

實際發生的情況取決於您的應用程序的ConnectionPool設置。

基本上,ConnectionPool的存在意味着您不必擔心連接的使用(多少次,維護多久),它變成了一個外部配置。

順便說一句:除了WinCE框架,略有different rules那裏。

2

完成後始終關閉ADO.NET連接。原因是ado.NET基礎結構將連接集中在一起,所以即使打開一個連接,第一次需要一段時間,通過關閉它釋放到池中,以便應用程序的其他部分可以更快地建立連接。對於這個規則的一些限制可以用一些嵌入式數據庫來完成,但是我們需要看一下這種情況。

2

您應該始終使用using塊立即關閉連接。

1

關閉連接與Disposing不同。連接池可以基於連接字符串的字典查找來重新使用關閉的連接(您的連接字符串必須完全相同才能使用連接池,但此功能是透明的)。另一方面,如果您處置或使用USING,則連接對象將被銷燬並且無法重新使用。

如果您打算在短時間內重新打開連接,那麼使用Close會更高效。

+0

爲了澄清,調用Dispose不會從連接池中刪除連接。而且我會遠離Close vs a Using語句的性能問題。 – 2011-09-12 20:17:21

+0

這裏是微軟基礎類庫團隊(2010年5月6日)的開發者報價(http://social.msdn.microsoft.com/profile/david%20m.%20kean/):這是SqlConnection等的例外al,Close並不意味着與Dispose相同。關閉關閉連接,但允許您稍後通過調用Open來重複使用相同的連接實例。 Dispose會關閉連接,但不允許您重複使用相同的連接實例。 http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/b3587ccc-74e0-4575-9b60-7c529d2607ac – Bengie 2011-09-15 18:49:58

+0

請閱讀「添加連接」部分:http://msdn.microsoft.com /en-us/library/8xx3tyca.aspx – 2011-09-15 21:11:51