CommandTimeout

sqlCom.CommandTimeout = 60;

說明

CommandTimeout命令執行逾時時間,單位:秒

  • 預設值:30秒
  • 範例設定為60 → 若SQL執行超過60秒仍未完成,就直接拋出逾時例外
    務必區分兩種不同的逾時設定
  1. ConnectionTimeout:寫在連線字串裡,建立資料庫連線的逾時
  2. 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)

注意事項

  1. 不可以設定負數,0代表無限等待(不建議,容易造成程式凍結)
  2. 僅對當前這個SqlCommand物件生效,並非全域設定
  3. 如果預存程序執行速度很慢,可以調大這個數值;
    實務上要優先最佳化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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *