sqlCom.CommandTimeout = 60;
說明
CommandTimeout:命令執行逾時時間,單位:秒
- 預設值:30秒
- 範例設定為60 → 若SQL執行超過60秒仍未完成,就直接拋出逾時例外
務必區分兩種不同的逾時設定
ConnectionTimeout:寫在連線字串裡,建立資料庫連線的逾時CommandTimeout:連線建立成功之後,等待SQL敘述執行的逾時
完整範例
private void button1_Click(object sender, EventArgs e)
{
string connectionString = "Data Source=.;Initial Catalog=db;User ID=sa;pwd=xxx";
// using 會自動釋放 SqlConnection 資源
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand sqlCom = new SqlCommand();
// 綁定資料庫連線(兩種寫法擇一即可)
sqlCom.Connection = conn;
sqlCom.CommandText = "select 1";
// 設定SQL執行逾時為60秒
sqlCom.CommandTimeout = 60;
object obj = sqlCom.ExecuteScalar();
MessageBox.Show(obj.ToString());
}
// 離開using區塊,conn自動關閉並釋放,不用手動呼叫 conn.Close()
}Code language: JavaScript (javascript)
注意事項
- 不可以設定負數,0代表無限等待(不建議,容易造成程式凍結)
- 僅對當前這個
SqlCommand物件生效,並非全域設定 - 如果預存程序執行速度很慢,可以調大這個數值;
實務上要優先最佳化SQL,不要單純一直加大逾時時間。
簡潔初始化寫法(鏈式語法)
SqlCommand sqlCom = new SqlCommand("select 1", conn)
{
CommandTimeout = 60
};Code language: JavaScript (javascript)
連線逾時設定
寫在連線字串當中,和 CommandTimeout 互不影響:
Data Source=.;Initial Catalog=db;User ID=sa;Password=xxx;Connect Timeout=15
Connect Timeout=15 → 嘗試連接資料庫最多等待15秒。
CommandTimeout
Previous: SqlCommand
Next: 執行最佳化與參數傳遞