首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 數據庫連接 Open/Close 語義與連接池最佳實踐

     編輯:程式設計綜合問答

核心概念

  • Open():從連接池獲取可用物理連接(或建立新連接),標記為忙碌。
  • Close() / Dispose():歸還連接到池,不銷毀物理連接(除非池滿或超時)。

連接池機制

ADO.NET 默認啟用連接池(Pooling=true)。相同連接字符串共享池。物理連接創建昂貴,池化大幅提升性能。

最佳實踐模式

using (var conn = new SqlConnection(connStr)) {
    conn.Open(); // 從池獲取
    using (var cmd = new SqlCommand(sql, conn)) {
        // 執行命令
    }
} // 自動 Dispose → 歸還池
  • 盡早打開,盡早關閉:業務邏輯執行前 Open,執行完立即 Close,縮短佔用時間。
  • 不要長連接:Web 請求級別獲取釋放,避免佔用池資源導致併發瓶頸。
  • 異常安全:using 保證即使拋異常也能歸還連接。
  • 檢測失效連接:池會定期探活,但網絡抖動可能導致獲取到斷開連接,執行命令前可輕量 SELECT 1 驗證或捕獲 SqlException 重試。

常見誤區

  • 以為 Close() 斷開物理鏈路 → 實際歸還池。
  • 單例保持連接不關閉 → 導致池耗盡、鎖竄升、防火牆斷開空閒連接報錯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved