关于c#:到达SqlCommand.CommandTimeout

SqlCommand.CommandTimeout is reached

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How to catch SQLServer timeout exceptions

我有以下代码:

1
2
3
4
5
6
7
8
9
10
11
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MainDll"].ToString()))
{
    connection.Open();
    using (SqlCommand command = new SqlCommand(sql.ToString(), connection))
    {
        command.CommandType = CommandType.Text;
        command.CommandTimeout = 300;
        returnCode = (string)command.ExecuteScalar();
        //Dispose();
    }
}

我怎么知道什么时候超时了?我想抓取它并在超时后对SQL做一些事情。


只有在引发错误时才能知道超时。

因此,我建议您尝试处理异常,如果捕捉到超时异常,那么您就可以根据自己的要求进行处理。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
try {
  //your code
}
catch (SqlException ex) {
  if (ex.Number == -2) { //System.Data.SqlClient.TdsEnums.TIMEOUT_EXPIRED
    //handle timeout
  }
  else {
    throw;
  }
}
finally {
  //cleanup
}

资料来源:这个SO线程。