使用Statement需要很长时间,有时会超时

时间:2013-10-01 21:39:00

标签: sql-server ado.net

我是ASP.NET新手。我想我不知道何时使用USING语句。当我在我的代码中尝试它时,下面的示例。它需要永远和有时超时。当我不使用时运行,它工作正常。

有人可以澄清USING声明吗?什么时候应该使用它,什么时候不应该使用它。

此代码将永远耗尽,并且超时。     ......有些代码在这里。打开数据库连接执行....

cmdinsert.CommandText = insertcommand;
cmdinsert.ExecuteNonQuery();

Using (SqlCommand command = new SqlCommand("Import_EvaluationMatch", connSQL, trans))
    {
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add("@RefNum", SqlDbType.Int).Value = RefNum;
    command.ExecuteNonQuery();
    }
trans.Commit();
connSQL.Close();

Response.Write("Import Successfully");
Response.Redirect("Default.aspx");
Response.End();

删除了USING语句,它运行正常。

... Some codes up here. Open DB Connection Execute....
cmdinsert.CommandText = insertcommand;
cmdinsert.ExecuteNonQuery();


// --- Now calling the stored procedure to process all this imported items.
SqlCommand command = new SqlCommand("Import_EvaluationMatch", connSQL, trans);
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add("@RefNum", SqlDbType.Int).Value = RefNum;
    command.ExecuteNonQuery();
trans.Commit();
connSQL.Close();

1 个答案:

答案 0 :(得分:1)

using声明不会花费任何时间。花费时间的是清理SqlCommand。使用using语句时,清理会在线进行。当你不使用它时,每当垃圾收集器决定时,清理就会随机进行。

这是“现在付钱给我,或者以后付钱给我”的案例。

您的Import_EvaluationMatch存储过程耗时太长,这有什么问题。