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秒。
Previous: SqlCommand
Next: 执行优化和参数传递