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秒。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注