获取超时已过期.从池中获取连接之前经过的超时时间
本文关键字:获取 超时 经过 时间 过期 连接 | 更新日期: 2023-09-27 18:25:58
我更频繁地遇到这个超时问题。我一直在使用MYSQL数据库和windows应用程序。我甚至尝试过使用have子句,但遇到了同样的情况
public bool VerifyStock(string serialnumber)
{
con = new MySqlConnection(connstring);
string readData = "select * from Fn_Inventory where ModelNumber = '" + serialnumber + "'";
cmd = new MySqlCommand(readData, con);
cmd.Parameters.AddWithValue("@ModelNumber", serialnumber);
con.Open();
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
//while (dr.Read())
if (dr.Read())
{
decimal invquntity = Convert.ToDecimal(dr["AvailableQuantity"].ToString());
decimal quantity = Convert.ToDecimal(txtQuantity.Text);
decimal sinvquntity = invquntity - quantity;
if (sinvquntity >= 0)
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
}
else
{
return false;
}
con.Close();
}
增加连接池大小和超时将是一个快速解决方案。您可以参考这里了解更多信息
并适当关闭打开的连接和端部外部条件。使用一个try catch finally
块,并将此代码添加到finally
块中,使其始终执行。
if (con.State == ConnectionState.Open)
{
con.Close();
}
您正在打开连接,但没有根据您的条件关闭它,并使用return语句从代码返回,或者在使用return语句的地方关闭连接,或者使用using()子句。当连接保持打开时,将没有可用的连接,因此池将满。从数据读取器读取完值后,请始终关闭连接。
using (SqlConnection con = new SqlConnection()) { //your code here}