[C#][ADO.NET 3.5] SqlConnection Timeout 與 SqlCommand Timeout 的差別

  • 28360
  • 0

[ADO.NET 3.5] SqlConnection Timeout 與 SqlCommand Timeout 的差別

前些日子朋友來問,這兩個的差別,這邊紀錄一下。

來看看 msdn 的解釋:

一、SqlConnection.ConnectionTimeout 屬性 :

取得在終止嘗試並產生錯誤前嘗試建立連接的等待時間。等待連接開啟的時間 (以秒為單位)。預設值為 15 秒。

即 SqlConnection.Open() 函式執行後真正開啟與 DB Server 建立連線完成,所需等待的時間。

使用方法

1.

 

static private string GetConnectionString()
{   
    return "Data Source=(local);Initial Catalog=AdventureWorks;"
        + "Integrated Security=SSPI;Connection Timeout=30";
}

2.

 

//此為永遠不會 timeout
SqlConnection.ConnectionTimeout = 0;

提醒

值為 0 表示沒有限制,但由於嘗試連接會永遠等待,所以應該避免在 ConnectionString 中使用。

 

二、SqlCommand.CommandTimeout 屬性

取得或設定結束執行命令的嘗試並產生錯誤之前的等待時間。等待命令執行的時間 (以秒為單位)。預設值為 30 秒。

即 SqlCommand 執行命令完畢的等待時間。

使用方法

//此為永遠等待
SqlCommand.CommandTimeout = 0;

 

提醒

0 值表示沒有限制,而在 CommandTimeout 中應該避免使用,因為嘗試執行命令將會無限期等待。

對內容連接 (在連接字串中,以 "context connection=true" 開啟的 SqlConnection) 執行命令時,CommandTimeout 沒有任何作用。

三小俠  小弟獻醜,歡迎指教