我在asp.net开发中相当新,所以你可以说我开发了一个编码不好的应用程序,它给了我这个错误。超时已过期。在从池中获取连接之前已经超时了一段时间
超时已过期。在从池中获取连接之前已超时。
我试着在谷歌搜索,发现这是因为应用程序池中未关闭的连接,所以我仔细检查我的应用程序和使用的关键字所有Sqlconnections插入,但还是我有这个问题的,这里是一些示例代码我的应用程序。所有的Sqlconnections都使用这样的语句。
using (Connection = new SqlConnection(CIPConnection))
{
string ReturnValue = String.Empty;
try
{
SqlDataReader Reader;
Connection.Open();
string CommandText = "SELECT * FROM Users WHERE NAME = @NAME AND PASSWORD = @PASSWORD";
Command = new SqlCommand(CommandText, Connection);
Command.Parameters.AddWithValue("@NAME", UserName);
Command.Parameters.AddWithValue("@PASSWORD", Password);
Reader = Command.ExecuteReader();
Reader.Read();
if (Reader.HasRows)
{
Session["ID"] = Reader["ID"];
Session["NAME"] = Reader["NAME"];
Session["DEPARTMENT"] = Reader["DEPARTMENT"];
switch (Reader["DEPARTMENT"].ToString())
{
case "Admin":
ReturnValue = "Admin";
break;
case "Editing":
ReturnValue = "Editing";
break;
case "Sales and Support":
ReturnValue = "Sales and Support";
break;
case "Writing":
ReturnValue = "Writing";
break;
default:
ReturnValue = "Sorry";
break;
}
}
}
catch (Exception exp)
{
Response.Write(exp.Message.ToString());
}
return ReturnValue;
}
现在我的问题是我是否需要关闭连接,即使在使用语句块?什么是关闭连接的最佳方式? (把它放在每个try语句的finally块中?)我是否也应该在SqlReader和SqlCommand中使用using语句?请告诉我摆脱未使用连接的最佳方式,以便我可以解决此问题。
谢谢。