我希望这个问题不是太愚蠢。我的ADO.Net中有一个很长的进程t-sql命令。我想增加命令超时(请参见下文)。
cmd.CommandTimeout = 600; // default is 30 sec. increase to 10 mins
try
{
cmd.ExecuteNonQuery();
cmd.CommandTimeout = 30; // set it back
}
catch (Exception ex)
{
string debug = ex.Message;
throw ex;
}
长时间处理完成后,我应该将超时设置回默认值吗?我正在寻找最好的做法。谢谢: - )
答案 0 :(得分:1)
如果重新使用命令对象,则可以将finally添加到try-catch,因此无论查询结果如何,都将重置它。 (成功或例外)。
但是当你使用它之后处理SqlCommand时。无需重置CommandTimeout
答案 1 :(得分:1)
最佳做法是不重复使用该命令,因为您不应该重用该连接。持有连接不利于扩展。
static private dbConnectionString = "CONNECTION DETAILS";
using (SQLConnection connection = new SQLConnection(dbConnectionString))
{
try
{
connection.Open();
using (SQLCommand command = connection.CreateCommand())
{
command.CommandTimeout = 600;
......
using(SQLDataReader rdr = command.ExecuteReader())
{
}
}
}
catch(SQLException ex)
{
}
finally
{
connection.Close();
}
}