[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 沒有任何作用。
三小俠 小弟獻醜,歡迎指教