亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

“打開/關閉” SqlConnection還是保持打開狀態?

“打開/關閉” SqlConnection還是保持打開狀態?

忽然笑 2019-12-11 16:09:04
我用靜態方法在簡單的靜態類中實現了我的業務邏輯。這些方法中的每一個在調用時都會打開/關閉SQL連接:public static void DoSomething(string something){    using (SqlConnection connection = new SqlConnection("..."))    {        connection.Open();        // ...        connection.Close();    }}但是我認為避免打開和關閉連接會節省性能。不久前,我用OleDbConnection類(不確定SqlConnection)進行了一些測試,它確實可以像這樣工作(據我所記得)://pass the connection object into the methodpublic static void DoSomething(string something, SqlConnection connection){    bool openConn = (connection.State == ConnectionState.Open);    if (!openConn)    {        connection.Open();    }    // ....    if (openConn)     {        connection.Close();    }}所以問題是-我應該選擇方法(a)還是方法(b)?我讀到另一個stackoverflow問題,即連接池為我節省了性能,我完全不必費心...PS。這是一個ASP.NET應用程序-連接僅在Web請求期間存在。不是Win-App或服務。
查看完整描述

3 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

堅持選擇a。


連接池是您的朋友。


查看完整回答
反對 回復 2019-12-12
?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

每次使用方法(a)。當您開始擴展應用程序時,處理狀態的邏輯將變得非常痛苦。

連接池按錫說的做。只需考慮一下在應用程序擴展時會發生什么,以及手動管理連接打開/關閉狀態會有多困難。連接池在自動處理此方面做得很好。如果您擔心性能,請考慮使用某種內存緩存機制,以防止任何阻塞。


查看完整回答
反對 回復 2019-12-12
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

處理完連接后,請務必立即關閉它們,以便它們的基礎數據庫連接可以返回到池中,并可供其他調用者使用。連接池的優化非常好,因此這樣做沒有明顯的損失。該建議與交易基本相同-完成后,請保持簡短。

如果您在使用多個連接的代碼周圍使用單個事務遇到MSDTC問題,則情況將變得更加復雜,在這種情況下,您實際上必須共享連接對象,并且僅在完成事務后才關閉它。

但是,您在這里是手工做的,因此您可能需要研究為您管理連接的工具,例如DataSet,Linq to SQL,Entity Framework或NHibernate。



查看完整回答
反對 回復 2019-12-12
  • 3 回答
  • 0 關注
  • 553 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號